# int_, int8/uint8, int16/uint16, int32/uint32, int64/uint64
# float_, float16, float32, float64
# complex_, complex64, complex128 (复数)
# string_, ASCII字符串 unicode_ Unicode字符串
# bool_
# 创建一/二维数组 参数为list或tuple
arr np.array([1,3,5,7],dtype np.int64);
print(arr,arr.dtype);
arr_ np.array([[1,3,5],[2,4,6]]);
print(arr_);
# 数组的转置
print(arr_.T);
# 创建范围数组
arr1 np.arange(start 0,stop 10,step 1,dtype np.int64);
print(arr1,arr1.dtype);
# 创建等差数组,endpoint:是否包含结束值 retstep:是否返回步长 返回二元组
arr2 np.linspace(start 0,stop 10,num 5,endpoint True,retstep True,dtype np.int64);
print(arr2[0],arr2[1]);
# 创建等比数组,endpoint:是否包含结束值 base:底数,start或stop:要以base为底数
arr3 np.logspace(start 0,stop 3,num 4,endpoint True,base 2,dtype np.int64);
print(arr3);
# 创建全为1的数组,shape:行列数
one np.ones(shape [2,3],dtype np.int32);
print(one);
# 创建全0的数组,shape:行列数
zero np.zeros(shape [3,2],dtype np.int32);
print(zero);
# 创建指定值的数组,shape:行列数
full np.full(shape [2,4],fill_value 10,dtype np.int32);
print(full);
# 创建单位数组,n:行列数
identity np.identity(n 4,dtype np.int32);
print(identity);
# 一/二维数组切片 切片修改会影响原数组
arr4 np.array([1,2,3,4,5]);
print(arr4[1:3],arr4[1:-1]);
arr5 np.array([[1,2,3],[4,5,6],[7,8,9]]);
print(arr5[0:2,1:2],arr5[0:2,1:2].shape); #使用shape查看数组形状
# 其他索引
arr6 np.array([10,12,13,14,15]);
a [2,3,4];
print(arr6[a]);
arr7 np.array([11,23,45,67,89]);
b [False,True,False,True,True];
print(arr7[b]);
# 数组分割
arr8 np.array([1,2,3,4,5,6,7,8]);
print(np.split(arr8,4)); # 平均分割为4部分
arr9 np.arange(0,8,1);
print(np.split(arr9,np.array([3,6,7]))); # 按照数组进行切片分割
# 连接数组
c1 np.array([1,3,5]);
c2 np.array([2,4,6]);
arr10 np.concatenate((c1,c2),axis 0); # axis:0/1轴 即x/y轴
print(arr10);
# 算术运算
arr11 np.array([3,4,5]);
d np.array([1,2,3]);
print(arr11 d);
print(arr11 ** d);
print(arr11 3);
# 随机数函数
rand np.random.rand(3);
rand1 np.random.randint(1,10,size 2); # size为生成后的形状
rand2 np.random.randint(1,20,size (2,3)); # 结果为2行3列的数组
print(rand,rand1);
print(rand2);
rand3 np.random.randn(3,4); # 标准正态分布随机数
print(rand3);
# 排序函数 axis:排序的轴索引(默认-1) order:排序字段
# kind:类型 quicksort(快排) mergesort(归并) heapsort(堆排序)
arr12 np.random.randint(1,100,10);
print(arr12);
sort np.sort(arr12,axis -1,kind quicksort ,order None);
print(sort);
# 聚集函数
arr13 np.array([1,4,11,5,67,222,10,27]);
print(arr13.sum(axis 0));
print(arr13.max(axis 0),arr13.min(axis 0));
print(arr13.mean(axis 0));
# 数组的保存与读取
arr14 np.arange(1,100,12);
arr15 np.arange(2,20,8);
print(arr14,arr15);
np.save(file arr14 ,arr arr14);
np.savez(file arr14_15 ,array_a1 arr14,array_a2 arr15);
print(np.load(file arr14.npy ));
arr14_15 np.load(file arr14_15.npz );
print(arr14_15[ array_a2 ]);