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) #标准差