Numpy
- 9即个数
- Printing Arrays
- Basic Operations
- Indexing, Slicing, and Iterating
- Shape Manipulation (操作shape属性)
- Stacking together different arrays
- 分片
- Copies and Views
- 花里胡哨的Index用法
- Universal Functions
- np.arange()
- np.exp()
- np.sqrt()
- np.add() | +
- np.all()
- np.any()
- np.apply_along_axis() #传列 传行 函数处理
- np.argmax() 返回最大所在的位置(并非是坐标)
- np.argmin()
- np.argsort() *排序,输出位置,好用
- np.average(,weights) 可以加权重
- np.bincount() #数有多少个数字,也可以加权重
- np.ceil() 向上取整
- np.clip(a, x1, x2) [x1, x2] 比x1小的变成x1,比x2大的变成x2,还支持组组操作
- np.conj() #复数
- np.corrcoef() #相关系数矩阵
- np.cov() #协方差阵 要求列样本,而不是一般的行样本
- np.cross() #向量叉乘
- np.cumprod() 累积
- np.cumsum() 累和
- np.diff() 差分
- np.dot()
- np.floor() 向下取整
- np.inner() #內积?
- np.inv()
- np.lexsort()
- np.max()
- np.maximum() 组组比较
- np.mean()
- np.median() #中位数
- np.min()
- np.minimum()
- np.nonzero() 返回数组非零元的坐标indices
- np.outer() #
- np.prod() 数组内元素的乘积
- np.re()
- np.round()
- np.sort()
- np.std() 标准差
- np.sum() 可以设定初始值
- np.trace() 迹
- np.tranpose() #可不单单是转置
- np.var() 方差
- np.vdot() #向量乘法, 不是向量弄成向量
- np.vectorize() #向量版np.apply_along_axis()?
- np.where() #适合找indices
- np.mgrid | np.meshgrid
苦numpy久矣!
import numpy as np
The Basics
属性 | 解释 |
---|---|
ndarray.ndim | 返回ndarray的轴数,向量轴为1,矩阵是2,以此类推 |
ndarray.shape | 返回ndarray的形状(n,m) |
ndarray.size | 返回ndarray的大小,即元素的个数 |
ndarray.dtype | 返回ndarray的数据类型 |
ndarray.itemsize | 返回数据类型所占位数? |
ndarray.data |
a = np.arange(15).reshape(3, 5)
a
a.shape
a.ndim
a.dtype.name
a.itemsize
a.size
type(a)
b = np.array([6, 7, 8])
b
type(b)
Array Creation
a = np.array(1,2,3,4) # WRONG
a = np.array([1,2,3,4]) # RIGHT
dtype=complex
c = np.array([[1, 2], [3, 4]], dtype = complex)
np.ones(), np.zeros(), np.empty()
默认dtype=float.64
np.zeros((3,4))
np.ones((2,3,4), dtype = np.int16)
np.empty((2,3)) #这玩意儿输出的情况视内存而定,我输出的和上面的一样了。
np.zeros_like() np.ones_like() np.empty_like()
注意:连数据类型一并复制的
np.arange(), np.linspace()
np.arange(10, 30, 5) #array([10, 15, 20, 25]) 没有30, 跟range一样
np.arange() 的步长还可以为浮点数,这是range()所不具备的,不过教程并不推荐这种做法(似乎是因为不稳定)。
np.arange(0, 2, 0.3)
np.linspace(0, 2, 9) #array([0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
9即个数
np.random.rand()|np.random.randn()
*.rand() [0,1]的均匀分布
np.random.rand(3, 2, 2)
*.randn() 标准正态分布
*.randn() * + 服从
np.fromfunction()
Printing Arrays
np.set_printoptions(threshold=np.nan)
Basic Operations
ndarray里面的 + - * / **都是元素对元素的。
矩阵乘法 dot() @
a1 = np.arange(8)
b1 = np.arange(8)
a2 = a1.reshape(2, 4)
b2 = b1.reshape(4, 2)
c1 = np.arange(2)
a1 @ b1 #140
a1.dot(b1) # 140
#a2 @ a2 | a2.dot(a2) Error
a2 @ b2 #array([[28, 34], [76, 98]])
a2.dot(b2) #array([[28, 34], [76, 98]])
#a2 @ c1 | a2.dot(c1) Error
b2 @ c1 #array([1, 3, 5, 7])
b2.dot(c1) #array([1, 3, 5, 7])
1.出现最后3个的原因:c1.shape: (2, )
2. 看来@ 和 dot() 并无不同 我以为在向量的时候不一样
+=, *= 俩边数据类型不一致的时候有风险
注意:俩个ndarray 做运算,“粗糙”的服从更加精准的。
ndarray.sum()| min() | max() | cumsum()
都有个共同的关键字: axis
axis = 0 作用于列
axis = 1 作用于行
ndarray.cumsum() 累加和
Indexing, Slicing, and Iterating
向量
a = np.arange(10) ** 3 #array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729], dtype=int32)
a[2]
a[2:5]
a[:6:2]
a[: :-1]
for i in a:
print(i)
与list一样(没看出啥差别)
多轴(多维)
注意:多维的时候,c[1],就当成list来理解。
多维情况下的迭代,也可以用list来理解,就是一层层(一个轴一个轴)地往下走。
d[1,...] d[..., 1] d[1,...,1]
Shape Manipulation (操作shape属性)
ndarray.ravel() | .reshape() | .T
注意:上面的方法不改变数组本身 也可以np.*()
.ravel() #按行排列,返回一维数组 (C-style 啥意思不明白)
.T 转置
np.resize() | ndarray.resize()
和reshape()不同,用来改变对象本身
Stacking together different arrays
np.vstack((a,b)) | np.hstack((a, b))
np.column_stack((a, b)) | np.row_stack((a, b))
分片
Copies and Views
和列表和字典一样。
非对象绑定复制 view()
由于上面出现的情况,有些时候需要非对象绑定的复制(自己取的名字),就是a,b指向的内存并非同一个。
Deep Copy copy()
比view()更极端 这点和list就不一样了(list环境下是浅拷贝)
花里胡哨的Index用法
传入list|ndarray查询
求最值
修改元素
Index with Boolean Arrays 你要还是不要
The i_x() function
不懂
Universal Functions
np.arange()
np.exp()
np.sqrt()
np.add() | +
np.all()
out 关键字按照教程打出错了,不知为何。
np.any()
关于out部分还是出错
np.apply_along_axis() #传列 传行 函数处理
注意:diag()的时候有毛病啊,有毛病的啊,不晓得为什么了,你妹!
np.argmax() 返回最大所在的位置(并非是坐标)
np.argmin()
np.argsort() *排序,输出位置,好用
np.average(,weights) 可以加权重
np.bincount() #数有多少个数字,也可以加权重
只能用于一维的数组,且元素是非负整数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix