reshape
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的文件操作
"""
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())
demo:随机漫步
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)