numpy 100题


提示: 100道题 带你玩转numpy

1. 导入numpy库并简写np

import numpy as np

2. 打印numpy版本和配置说明

print(np.__version__)
print(np.show_config())

3. 创建长度为10 的空向量

print(np.zeros(10))

4. 任何一个数组的内存大小

data = np.zeros((10,10))
print('%d byte'%(data.size*data.itemsize))

5.从命令行得到函数说明文档

print(np.info(np.add))

6.创建长度为10除第5个值为1的空向量

data = np.zeros(10)
data[4]=1
print(data)

7.创建值域范围为10到49的向量

data = np.arange(10,50)
print(data)

8.反转一个向量

data = np.arange(50)
data = data[::-1]
print(data)

9.创建3*3且值从0到8的矩阵

a = np.arange(9).reshape(3,3)
print(a)

10.找到数组中非0的位置索引

nz = np.nonzero([1,3,5,0,0,9])
print(nz)

11.创建3*3的单位矩阵

data = np.eye(3)
print(data)

12.创建333的随机数组

#随机生成(0,1)之间的浮点数
data = np.random.random((3,3,3)) 
print(data)
#返回一个或一组服从**“0~1”均匀分布**的随机样本值
numpy.random.rand(3,3)
#返回一个或多个从标准正态分布的样本值
numpy.random.randn(3,3)

13.创建10*10的随机数组并取最大值和最小值

data = np.random.random((5,5))
# 值
print(np.amax(data))#返回值值
print(np.amax(data, axis=0)) #竖着比较,返回值
print(np.amax(data, axis=1)) #横着比较,返回值
#索引
print(data)
print(np.argmax(data))#此时得到的索引是将数组
					 #flattern(展成一维数组)后的索引 (17)
#如何得到对应的原数组的索引呢?
ind_max_src = np.unravel_index(np.argmax(data), (5,5))
print(ind_max_src)#(3,2)

print(np.argmax(data, axis=0))  #竖着比较,返回行号
print(np.argmax(data, axis=1))  #横着比较,返回列号

14.创建长度为30的随机向量并找到它的平均值

data = np.random.random(30)
m =data.mean()
print(m)

15.创建一个二维数组,边界为1,其余为0

在这里插入图片描述

data = np.ones((5,5))
data[1:-1,1:-1]=0
print(data)

16.对一个存在的数组,添加边界为0

在这里插入图片描述

data = np.ones((5,5))
data=np.pad(data,pad_width=1,mode='constant',constant_values=0)
print(data)

17 判断是否是NAN

print(np.isnan(np.nan))
# p.nan和任何数做不等于比较都返回True
# np.nan != np.nan
# np.nan != 0
# np.nan != None
# np.nan != 0.0

18 创建5*5的矩阵,并设置值1,2,3,4落在其对角线下方位置

在这里插入图片描述

print(np.diag(1+np.arange(4),k=-1))

np.diag(v, k=0)

用处:提取对角线元素或构造对角线数组。
参数:K: 对角线的位置参数,0为默认主对角线,1为主对角线偏上一个单位,-1为主对角线偏下一个单位,以此类推。
	v: 如果v为一个二维数组(矩阵),则返回该二维数组(矩阵)的K对角线元素,即用来提取返回对角线元素的作用。
	   如果v为一个一维数组的话,则返回一个以该一维数组作为k对角线元素的矩阵,即用来生成一个对角线元素数组

19 创建5*5的矩阵,设置棋盘样式

在这里插入图片描述

data = np.zeros((5,5))
data[::2,1::2]=1
data[1::2,::2]=1
print(data)

20 (6,7,8)形状组成的数组,其第100个索引的(x,y,z)是什么?

print(np.unravel_index(100,(6,7,8)))

21 用tile函数创建8*8的棋盘矩阵

在这里插入图片描述

data = np.tile(np.array([[0,1],[1,0]]),(4,4))
print(data)

22 对一个5*5的随机矩阵做归一化

data = np.random.randint(1,10,(5,5))
datamax,datamin = np.amax(data),np.amin(data)
print((data-datamin)/(datamax-datamin))

23 一个53的矩阵 和一个32的矩阵相乘

data = np.dot(np.ones((5,3)),np.arange(6).reshape(3,2))
print(data)

25 对数组 3到8之间数取反

data = np.arange(10)
data[(3<data)&(data<9)]*=-1
print(data)

26 numpy.sum

# python sum
print(sum(range(5),-1)) # 9 1+2+3+4+5-1
# numpy sum
from numpy import *
print(sum(range(5),-1))# 10  -1 表示最后一个维度上相加

27 向量运算 z**z

data = np.arange(5)
print(data**data)

30 找到两个元素中的共同元素

data1 = np.random.randint(1,10,5)
data2 = np.random.randint(1,10,5)
print(np.intersect1d(data1,data2))

33 昨天 今天 明天的日期

today = np.datetime64('today','D')
print(today -np.timedelta64(1,'D'))
print(today+np.timedelta64(1,'D'))

34 202207对应的日期

date = np.arange('2022-07','2022-08',dtype='datetime64[D]')
print(date)

35 用5种方法取整

data = np.random.uniform(1,10,10)
print(data)
print(np.ceil(data)-1)
print(np.floor(data))
print(np.trunc(data))
print(data -data%1)
print(data.astype(int))

40 创建长度为10的向量并排序

data = np.random.random(10)
data.sort()
print(data)

45 最多值赋权0

data = np.random.random(10)
data[data.argmax()]=0
print(data)

55 numpy 与enumerate的等价的操作

data = np.arange(9).reshape(3,3)
for i,v in np.ndenumerate(data):
    print(i,v)

57 二维数组内部 随机放置P个元素

n=10
p=5
data = np.zeros((n,n))
np.put(data,np.random.choice(range(n*n),p,replace=False),1)
print(data)

61 从数组中的给定值中找出最近值

data = np.random.uniform(-5,5,10)
data1 =0.5
n = data[np.abs(data-data1).argmin()]

69 获得点积的对角线

A = np.random.uniform(1,10,(5,5))
B = np.random.uniform(1,10,(5,5))
#法一
print(np.diag(np.dot(A,B)))
#法二
print(np.sum(A*B.T,axis=1))

72 数组中任意两行做交换

data = np.arange(25).reshape(5,5)
data[[1,0]]= data[[0,1]]
print(data)

80 找到一个数组中出现频率最高的值

data = np.random.randint(3,5,50)
print(data,np.bincount(data).argmax())
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值