【Python】numpy学习笔记

reshape

import numpy as np
#生成8行4列的元素
arr=np.arange(12).reshape((26))
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)

Guess you like

Origin blog.csdn.net/kz_java/article/details/120883791