numpy数组使用总结

1.数组的创建:

a = np.array([1,2,3,4,5])
b = np.array(range(5)) #b=[0,1,2,3,4]
b = np.array(range(1,5,2)) #1到5(不包括5),跨度为2,b=[1,3]
c = np.arange(5) #c=[0,1,2,3,4]
c = np.arange(5,1,-1) #5到1(不包括1),跨度为-1,c=[5,4,3,2]
a = np.array([i for i in range(0,5,1)]) # a = [0,1,2,3,4] 
a = np.array([random.randint(20,30) for i in range(5)]) # a在20-30中随机取5个值
t = np.arange(0., 5., 0.2) #小数

数组类型:type(a) #numpy.ndarray

数据类型:a.dtype

2.创建数组时指定数据类型:

c = np.arange(10,dtype = "float") #可用f代替

3.调整数据类型:

d = c.astype("int64") #可用i8代替,将类型转换为int64

4.保留小数位数:

t1 = np.array([random.random() for i in range(10)]) #生成10个随机小数 
t2 = np.round(t1,3) #取3位小数

    

5.数组的形状修改:

t1 = np.arange(12)
print(t1)
print("t1.shape:" + str(t1.shape) + "\n")
t2 = t1.reshape(3,4) #t1本身不会发生变化,这里(3,4)也可写作(3,-1)或(-1,4)
print(t2)
print("t2.shape:" + str(t2.shape)) #t2.shape[0]==3,t2.shape[1]==4

    

变为一维数组:

t3 = t2.reshape(12,) #或(-1,)
t3 = t2.flatten()

6.数组的计算:

数组加(减乘除)一个数字,等于数组内所每一个数都加(减乘除)这个数:

t4 = np.arange(24).reshape(6,4)
t4 *= 2
print(t4)

输出:

   

相同形状数组相加,等于对应位置的每一个元素相加。除此之外,某一维度为1(或缺少某一维度),其余维度相同的数组也能进行加减乘除操作:

t4 = np.arange(24).reshape(6,4)
t5 = np.array([1,2,3,4])
t6 = np.array(range(6)).reshape(6,1)
print("t4:\n" + str(t4))
print("t4 + t5:\n" + str(t4+t5)) #t4每一行加[1,2,3,4]
print("t4 + t6:\n" + str(t4+t6)) #t4每一列加t6,即[[1],[2],[3],[4],[5],[6]]

输出:

    

7.数组元素读取:

#读取第ihangj列元素
t[i][j] #或t[i,j]
#读取第i行元素
t[i] #或t[i,] t[i,:]
#读取第j列元素
t[:,j]

t[0:2,0:3] #读取前2行前3列的元素
t[[1,3]] #读取第1行(从0开始)和第3行
t[:,[1,3]] #读取第1列和第3列
t[[0,2,3],[1,2,2]] #取[0,1][2,2][3,2]三个点

8.数组的转置:

t = t1.transpose()
t = t1.T
t = t1.swapaxes(1,0) #将第一维度放在第0维度前面

9.bool索引:

t = np.arange(24).reshape(6,4)
print(t < 10) #不会改变t的值

输出:

  


t[t<10]=10 #将小于10的元素赋值为10
print(t4)

     


t[t <10] #取t中比10小的数

    


np.where(t<10,0,10) #t中元素小于0赋值为0,否则赋值为10

       


t.clip(10,18) #小于10赋值为10,大于18赋值为18

   

10.数组拼接:

np.vstack((t1,t2)) #竖直拼接
np.hstack((t1,t2)) #水平拼接

    

11.数组行列交换:

t4[[1,2],:] = t4[[2,1],:] #第一行和第二行交换
t4[:,[1,2]] = t4[:,[2,1]] #第一列和第二列交换

    

12.一些创建数组的函数:

t = np.zeros((3,4)) #创建一个全为0的数组
t = np.ones((3,4)) #创建一个全为1的数组
t = np.eye(3) #创建一个3×3的单位矩阵

np.argmax(t,axis=1) #求t数组第1维度上最大值所在位置,如果是二维数组即求每一列的最大值
np.argmin(t,axis=0) #求t数组第0维度上最小值所在位置

13.数组的复制:

a = b #浅拷贝
a = b[:] #对b切片,也是浅拷贝
a = b.copy() #深拷贝,拷贝后ab不会互相影响

14.计数:

np.count_nonzero(t4>15) #统计t4中大于15的元素的个数
np.count_nonzero(t4!=t4) #统计t4中nan的个数(因为nan!=nan)
np.isnan(t4) #统计t4元素是否是nan,返回bool数组

15.常用的统计函数:

t.sum(axis=None) #求和
t.mean(axis=None) #平均值
np.median(t,axis=None) #中值
t.min(axis=None) #最小值
t.max(axis=None) #最大值
np.ptp(t,axis=None) #极值
t.std(axis=None) #标准差
发布了57 篇原创文章 · 获赞 260 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_40692109/article/details/104574305
今日推荐