import numpy as np
#array创建已有数据数组
data1 = [1,3,5,7,9,2,4,6,8,0]
w1 = np.array(data1)
w2 = np.array([1,2,3,4],dtype = 'float64')
print('w1=:',w1)
print('w2.dtype=:',w2.dtype)
#生成数组
arr1 = np.arange(10)
arr2 = np.arange(0,1,0.2)
arr3 = np.linspace(0,1,5) #多用于浮点型
arr4 = np.logspace(0,1,5) #等比 !!!是10的0和1次方 默认50个
arr5 = np.zeros(4) #全0数组
arr6 = np.ones([4,4]) #全1数组
arr7 = np.diag([1,2,3,4]) #主对角线为指定值,其余为0
#属性转换
data2=np.array([[1,2,3],[4,5,6]])
data2.ndim #秩:2(几维数组)
data2.shape #形状:(2,3)
data2.size #元素个数:6
data2.itemsize #单个字节大小:4 !有整型和浮点型,为8
data2.shape = 3,2 #修改数组形状,原数组改变----reshape函数不改变
print(data2.astype(np.float64)) #将data2整型数据改为了浮点型
#随机数生成
np.random.randint(low,high = None,size = None)
warray1 = np.random.randint(100,200,size = (2,4))
warray2 = np.random.rand(5) #默认low=0,high=1
#数组变换
warray3 = arr1.reshape(5,2)
arr1.reshape(2,-1) #4位置的数为A,要求B=arr1.size,B%A==0时才可以写-1
data2.ravel() #数组一维化
data2.flatten() #数组一维化
data3 = data2 * 2
#不能写np.hstack((data2,data2*2)) !!!注意是双括号
np.hstack((data2,data3)) #横向合并
np.vstack((data2,data3)) #纵向合并
print('横向合并:',np.concatenate((data2,data3),axis = 1))
print('纵向合并:',np.concatenate((data2,data3),axis = 0))
data4 = np.arange(16).reshape(4,4)
np.hsplit(data4,2)
np.vsplit(data4,2)
print('横向分割:',np.split(data4,2,axis = 1))
print('纵向分割:',np.split(data4,2,axis = 0))
print('转置矩阵:',data2.transpose((1,0)))
data2.transpose((1,0))==data2.T #数组的T属性转换
print('轴对换:',data2.swapaxes(0,1)) #轴对换
#数组的切片与索引
data5 = np.arange(12).reshape(3,4)
data5[2],data5[:1,:1],data5[0,1:3] #不产生新数据
xx = data5[2].copy() #数组的复制
np.intersect1d(data5,data2) #查找两个数组的相同元素