记录维维的每一篇Hello World

导入numpy工具包
import numpy as np
列表转数组
list1 = [1, 2, 3, 4, 5]array = np.array(array) # array([1, 2, 3, 4, 5])
向量加,减,乘,除
# 加a = array + array # array([ 2, 4, 6, 8, 10])b = array + 2 # array([3, 4, 5, 6, 7])# 减c = array - array # array([0, 0, 0, 0, 0])d = array - 2 # array([-1, 0, 1, 2, 3])# 乘e = array * array # array([ 1, 4, 9, 16, 25])f = array * 2 # array([ 2, 4, 6, 8, 10])#除g = array / array # array([1., 1., 1., 1., 1.])h = array / 2 # array([0.5, 1. , 1.5, 2. , 2.5])# 还支持取整[//], 取余[%], 次方[**]等操作
基础生成数组方法
a = np.zeros(5, int) # array([0, 0, 0, 0, 0])b = np.ones(5, int) # array([1, 1, 1, 1, 1])c = np.empty(5) # array([0.5, 1. , 1.5, 2. , 2.5])d = np.full(5, 7.) # array([7., 7., 7., 7., 7.])g = np.arange(1, 7, 2) # array([1, 3, 5])h = np.linspace(0, 1, 5) # array([0. , 0.25, 0.5 , 0.75, 1. ])
复制一个已经存在的全零向量
a = [[2,2,4,4]]b = np.zeros_like(a, int) # array([[0, 0, 0, 0]])c = np.ones_like(a, int) # array([[1, 1, 1, 1]])d = np.empty_like(a, float) # array([[0., 0., 0., 0.]])e = np.full_like(a, 7) # array([[7, 7, 7, 7]])
随机生成
# [0, 10) -> inta = np.random.randint(1, 10, 5) # array([5, 4, 7, 8, 5])# [0, 1) -> floatb = np.random.rand(5) # array([0.60662688, 0.05057988, 0.67408325, 0.46158708, 0.22527504])# [1, 10) -> floatc = np.random.uniform(1, 10, 5) # array([5.20380123, 7.30793837, 1.69228062, 6.08904731, 9.72462157])# -> float 均值0,标准差1d = np.random.randn(5) # array([-1.27457586, -0.79154283, -0.53697081, -0.26460627, -1.17328879])# -> float 均值7,标准差2e = np.random.normal(7, 2, 5) # array([ 5.57415372, 5.24223647, 10.17502981, 5.43507097, 8.01305347])
向量索引
# 和python列表索引一样a = np.arange(6) # array([0, 1, 2, 3, 4, 5])b = a[1] # 1c = a[1:3] # array([1, 2])d = a[::2] # array([0, 2, 4])# 不同e = a[[1, 3, 5]] # array([1, 3, 5])f = a[a>4] # array([5])g = a[(a>2) & (a<4)] # array([3]), and[&], or[|], xor[^], not[~]a[::2] = 0 # a = array([0, 1, 0, 3, 0, 5])
布尔操作
a = np.any(a>4) # Trueb = np.all(a>4) # Falsec = np.nonzero(a>3) # (array([4, 5], dtype=int64),)d = np.where(a>3) # (array([4, 5], dtype=int64),)e = np.where(a>3, 1, 0) # array([0, 0, 0, 0, 1, 1])np.clip(a, 3, 5) # a = array([3, 3, 3, 3, 4, 5])
基础函数
np.sqrt(array) # 平方根np.exp(array) # e**arraynp.log(array) # ln(a)
标量运算
np.dot(array1, array2) # 向量积的和np.cross(array1, array2) # 向量各项的积的和
三角函数
np.sin(array) # 正弦值np.arcsin(array) # 反正弦np.hypot(array1, array2)
整体取整
np.floor(array) # 向上取整np.ceil(array) # 向下取整np.round(array) # 四舍五入
统计操作
# 最大值np.max(array)array.max()# 最小值np.min(array)array.min()# 平均值np.mean(array, axis=0) # axis=0求各列平均值,axis=1求各行平均值array.mean()# 和np.sum(array)array.sum()# 最大值索引np.argmax(array)array.argmax()# 最小值索引np.argmin(array)array.argmin()# 方差np.var(array)array.var()# 标准差np.std(array)array.std()
排序操作
np.sort(array)array.sort()
查找操作
a = 2# 一般方法np.where(array==a)[0]# 需要numbanext(i[0] for i, v in np.ndenumerate(array) if v==a)# 针对排过序的arraynp.searchsorted(array, a)
二维数组/矩阵
# 创建a = [[1, 2, 3],[4, 5, 6]]array = np.array(a)# array([[1, 2, 3],# [4, 5, 6]])# 全是0, 其他方法一样(row, col)np.zeros((3, 2), int)# array([[0, 0],# [0, 0],# [0, 0]])# 随机数np.random.rand(3, 2)# array([[0.06885682, 0.50443681],# [0.32235346, 0.00295998],# [0.17635307, 0.78777035]])# x==y的值为1,其他为0np.eye(3)# array([[1., 0., 0.],# [0., 1., 0.],# [0., 0., 1.]])# (row, col)array.shape# 排序/axis默认为0array.sort(axis=0)# 其他操作也与一维数组类似
改变形态
array.reshape(row, col)# row, col为(1, -1)时可转换成类似一维数组
合并/拆分
# 左右合并np.hstack((array1, array2))# 上下合并np.vstack((array1, array2))# 左右拆分np.hsplit(array, [3])# 上下拆分np.vsplit(array, [3])
复制
# 复制array矩阵3行2列np.tile(array, (3, 2))# 复制array两行array.repeat(2, axis=0)# 复制array两列array.repeat(2, axis=1)
操作
# 删除1, 3行np.delete(array, [1, 3], axis=0)# 删除1, 3列np.delete(array, [1, 3], axis=1)# 删除第二到倒数第二行之间np.delete(c, np.s_[1: -1], axis=0)np.delete(c, slice(1, -1), axis=0)# 删除第二到倒数第二列之间np.delete(c, np.s_[1: -1], axis=1)np.delete(c, slice(1, -1), axis=1)
插入
# 在1, 2列插入0np.insert(array, [1, 2], 0, axis=1)# 在第一列插入arraynp.insert(array1, [1], array2, axis=1)# 在行尾部添加arraynp.append(array1, array2, axis=0)
注意事项
1、阅读https://zhuanlan.zhihu.com/p/396444973后记录
2、axis等于0时为行,等于1时为列,默认为0
3、哎
python环境
电脑:Windows10
python:3.10.4
