NumPy性质
是在计算机中矢量化的数组
定义
import numpy as np
1、一般定义
array1d = np.array([1,2,3,4,5])
print(array1d)#结果1
array2d = np.array([[1,2,3,4],[5,6,7,8]])
print(array2d)#结果2
print(array2d.shape)
print(array2d.type)#结果3
在numpy中数组内的元素大小与类型必须一致,[[1,2,3,4],[5,6,7]]与[[1,2,3,4],[5,6,7,“e”]]都是错误写法
结果1:
结果2:
结果3:
2、特殊定义
print(np.zeros(shape=(2,4)))#输出全为0的2*4矩阵
print(np.ones(shape=(2,4)))#输出全为1的2*4矩阵
print(np.identity(3))#输出三维单位矩阵
print(np.diag([1,2,4,5]))#输出对角线是1,2,4,5的4*4对角矩阵
print(np.sign(array1d))#获取array1d的各个数据的符号
print(np.ones_like(array2d))#生成与array2d同等规格的全1数组
#结果4
结果4:
3、arange生成器及reshape用法
#与range生成器有相似功能
array1d1 = np.arange(1,21,1)#不包含上界,生成一维数组
print(array1d1)
array2d1 = array1d1.reshape(4,5)#生成二维数组
print(array2d1)
array3d1 = array1d1.reshape(2,2,5)#生成三维数组
print(array3d1)
#结果5
结果5:
数据类型转换
floatArray = array1d.astype(dtype=np.float)#将array1d数组数据类型int转换成float
矢量计算
两数组对应下标元素进行相应的运算
array1d3=np.arange(1,5)
print(array1d3)#结果[1,2,3,4]
print(array1d3+1)#结果:[2,3,4,5]
print(array1d3+array1d3)#结果[2,4,6,8]
'''上式等价形式:
for row1,row2 in zip(array1d3,array1d3):
for x,y in zip(row1,row2):
z=x+y
pass
'''
print(array1d3-1)#结果[0,1,2,3]
print(array1d3-array1d3)#结果[0,0,0,0]
print(array1d3*2)#结果[2,4,6,8]
print(array1d3*array1d3)#结果[1,4,9,16]
索引与切片
多维数组切片索引用","区分各维度
使用copy添加数组副本,对副本修改不影响原数组
如下文的:arr = array1d1[0:4].copy()
array1d1 = np.arange(1,11,1)
print("切片")
print(array1d1)#输出[1,2,3,4,5,6,7,8,9,10]
#索引
print(array1d1[1])#输出2
print(array1d1[5:])#输出[6,7,8,9,10]
array1d1[5:]=10#批量赋值
print(array1d1)#输出[1,2,3,4,5,10,10,10,10,10]
array1d1[:]=0#array1d1=0不行
print(array1d1)#输出[0,0,0,0,0,0,0,0,0,0]
#得到切片副本:不会影响到原数组
arr = array1d1[0:4].copy()
arr[:] = 1
print(array1d1)#输出[0,0,0,0,0,0,0,0,0,0]
print(arr)#输出[1,1,1,1,1,1,1,1,1,1]
#二维数组索引、切片
array2d3 = np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(array2d3)#输出
print(array2d3[1,0:2])#输出[6,7]
print(array2d3[0:,2:])#array2d3[一维切片,二维切片],三维同样
#输出[3,4,5]
# [8,9,10]