import numpy as np #生成8行4列的元素 arr=np.arange(12).reshape((2,6)) print(arr) 输出: [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11]] arr=np.arange(24).reshape((2,3,4)) print(arr) 输出: “”“ [[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]] ”“”
对二维数组选取行和列
import numpy as np arr=np.arange(32).reshape((8,4)) print(arr) print(arr[[1,5,7,2]][:,[0,3,1,2]]) """ 4 7 5 6 20 23 21 22 28 31 29 30 8 11 9 10 """
转置就是重塑数组的一种特殊形式
使用array.transpose或者 array.T都能达到相同的效果
轴与轴之间的数据转换
import numpy as np arr=np.random.randn(4,4) print(arr) arr_1=np.where(arr>0,2,-2) print(arr_1) arr_2=np.where(arr>0,2,arr) print(arr_2)
np.where等同于x if condition else y矢量化的一个版本
np.where用于根据一个数组产生一个新的数组
import numpy as np arr=np.random.randn(4,4) arr_1=np.where(arr>0,2,-2) print(arr_1) arr_2=np.where(arr>0,2,arr) print(arr_2) 输出: [[ 0.43381604 0.32422037 -1.47085834 0.7658069 ] [ 0.87574729 -1.06108865 1.02846833 0.54714308] [-0.01142063 -1.07268708 -0.80541467 -0.56147169] [-0.16371619 0.53085074 -0.63674942 -0.40037197]] [[ 2 2 -2 2] [ 2 -2 2 2] [-2 -2 -2 -2] [-2 2 -2 -2]] [[ 2. 2. -1.47085834 2. ] [ 2. -1.06108865 2. 2. ] [-0.01142063 -1.07268708 -0.80541467 -0.56147169] [-0.16371619 2. -0.63674942 -0.40037197]]
import numpy as np x_arr=[1,2,3] y_arr=[0.1,0.2,0.3] condition=np.array([True,False,True]) rs=[x if c else y for x,y,c in zip(x_arr,y_arr,condition)] print(rs) r=np.where(condition,x_arr,y_arr) print(r)
import numpy as np arr=np.random.randn(4,4) print(arr) print(arr.mean())#数组中所有值的平均值 print(np.mean(arr))#另一种写法 print(arr.sum())#求和 print(arr.std()) ###参数 axis表示在一个指定的轴上进行运算 print(arr.mean(axis=1))#计算轴1上的平均值 print(arr.sum(axis=0))#计算轴0上的和
import numpy as np arr=np.random.randn(4) print(arr) arr.sort() print(arr)
多维数组的排序
import numpy as np arr=np.random.randn(4,4) print(arr) arr.sort(1) #传递轴号,按轴来进行排序 # 1 表示按行排序 默认轴号等于1 即按行进行排序 print(arr)
""" numpy可以读写磁盘上的文本数据或者是二进制数据 主要应用的函数就是np.save和np.load, 默认情况下数据是以未压缩的原始二进制格式保存在扩展名为.npy的文件中; """ import numpy as np # arr=np.arange(10) # print(arr) # np.save("any_array_file_name",arr) arr=np.load("any_array_file_name.npy") print(arr)
保存成压缩文件
import numpy as np arr=np.arange(10) np.savez('any_arr',a=arr) #保存成一个压缩文件,数组以关键字参数的形式传入 rs=np.load('any_arr.npz')['a'] print(rs)
保存成txt文件
import numpy as np arr=np.arange(10) np.savetxt("array",arr,delimiter=",")# 这就是保存了一个文本文件,分隔符指定为,号 rs=np.loadtxt("array",delimiter=",") print(rs)
import numpy as np #线性代数 """ dot 矩阵的乘法运算 trace 计算对角线元素的和 det 计算矩阵的行列式 eig 计算方阵的本征值和本征向量 inv 计算方阵的逆 """ x=np.array([[1,2,3],[4,5,6]])# dim-2*3 y=np.array(([[1,2],[3,4],[5,6]]))# dim-3*2 rs=x.dot(y) print(rs) print(x.trace()) print(y.trace())
import numpy as np import matplotlib.pyplot as plt # 随机漫步 position=0 walk=[position] steps=1000 for i in range(steps): step= 1 if np.random.randint(0,2) else -1 position+=step walk.append(position) plt.plot(walk)