1 前言
numpy是一个很好的向量、矩阵和张量的运算库,要好好学习~
2 Numpy数据类型
整型:int
浮点数:float
# 类型转换
x.astype(np.float32)
3 NumPy数组
# 创建np.array数组
a = np.array([1, 2, 3, 4, 5, 6])
# 获取np.array的大小
array.shape
# 返回tuple元组
# 获得元素个数
array.size
# 返回int
4 基础运算
取整运算
函数 | 功能 |
---|---|
np.ceil() | 向上取整 |
np.floor() | 向下取整 |
np.rint() | 最近邻取整 |
np.rint()
:当x为恰好位于两个整数之间即:
x
=
k
+
0.5
,
k
∈
Z
x=k+0.5, k\in\mathbb{Z}
x=k+0.5,k∈Z,NumPy会取整到最接近的偶数值。
保留n位小数
np.around(x, decimals) # decimals表示需要保留的位数
5 Np.array索引
# 同时索引多个元素
x1,x3 = a[[1,3]]
查找指定值的索引: np.argwhere()
import numpy as np
x = np.arange(6).reshape(2,3)
x
>>>
array([[0, 1, 2],
[3, 4, 5]])
# x最大值的索引
[x == x.max()]
# 获得索引序列的数组
np.argwhere(x>1)
>>>
array([[0, 2],
[1, 0],
[1, 1],
[1, 2]])
# 获得每个维度上索引的数组
(x>1).nonzero()
>>>
(array([0, 1, 1, 1]), array([2, 0, 1, 2]))
# 获得的索引数组可以直接作为对应维度上ndarray的索引
6 改变np.array的形状
改变np.array的形状可以使用**resize()和reshape()**函数;
(关于resize()和reshape()函数的不同,可以参考这篇博文
《python ,numpy 模块中 resize 和 reshape的区别》)
7 获得np.dtype的数值范围
获得浮点数的数值范围,
np.finfo(np.float)
其中,np.finfo
的解释如下,
——查看np.finfo官方文档 — numpy.finfo — NumPy
8 numpy中的原位运算
我之前在写numpy代码时,有时候会出错,原因就是原位运算没有弄清楚,这里记录一下;
±×/ — 四则运算不是inplace
注意,numpy中的四则运算不是原位运算,可以参考下面的测试代码:
x = np.arange(10)
print(x)
y = x
y = y - 10
print(y)
print(x)
经过四则运算后,y变成了一个新的array数组,跟x没有什么关系了。
9 Numpy绘图
9.1 Numpy.ogrid: return an Open multi-dimensional “meshGrid”
函数np.ogrid
可以获得整数网格的坐标
示例代码:
>>> np.ogrid[0:5,0:5]
[array([[0],
[1],
[2],
[3],
[4]]), array([[0, 1, 2, 3, 4]])]