Numpy 技巧
1. 自动形状推断
当你修改 ndarray
的形状时,你可以省略某个维度的尺寸(设置为 -1
,该维度尺寸会自动推断出来。如: a.shape=2,-1,3 # -1 表示能够自动推断出来
2. histogram
numpy.histogram(a, bins=10, range=None, normed=False, weights=None, density=None)
函数应用到一个数组返回一对变量:
- 直方图数组:区间内统计的样本数量(也可能归一化为样本频率)
- 长条的底边划分序列:区间划分点(该划分点将
range
划分为若干个区间)
其个参数名字为:
a
:array-like
对象,为输入数据。如果是多维数组则展平为一维bins
:- 如果为整数,则它定义了在指定
range
内的等宽度长条的数量 - 如果为整数序列,则它定义了长条的底边
- 如果为字符串,则比较复杂,具体可参考文档
- 如果为整数,则它定义了在指定
range
:所有等宽长条的下界和上界。如果未提供则结果是元组(a.min(),a.max())
。如果a
有元素值在它之外,则忽略该元素。normed
:该关键字是deprecated
。weights
:权重数组。它是a
形状相同,它给出了对应的a
中的元素的权重。如果desity
为True
,则该数组被归一化。density
:如果为False
,则结果是每个长条的样本数量;如果为True
则结果是每个长条的频率值(估计密度函数)。
注意:
matplotlib.pyplot
也有一个建立直方图的函数(hist(...)
),区别在于matplotlib.pyplot.hist(...)
函数会自动绘直方图,而numpy.histogram
仅仅产生数据
3. NaN 和无穷大
在 numpy
中,有几个特殊的数:
numpy.nan
表示NaN
(Not a Number
),它并不等价于numpy.inf
(无穷大)。numpy.inf
:正无穷numpy.PINF
:正无穷(它就引用的是numpy.inf
)numpy.NINF
:负无穷
有下列函数用于判断这几个特殊的数:
numpy.isnan(x[,out])
:返回x
是否是个NaN
,其中x
可以是标量,可以是数组numpy.isfinite(x[, out])
:返回x
是否是个有限大小的数,其中x
可以是标量,可以是数组numpy.isfinite(np.nan)
返回False
,因为NaN
首先就不是一个数numpy.isposinf(x[, out])
:返回x
是否是个正无穷大的数,其中x
可以是标量,可以是数组numpy.isposinf(np.nan)
返回False
,因为NaN
首先就不是一个数numpy.isneginf(x[, out])
:返回x
是否是个负无穷大的数,其中x
可以是标量,可以是数组numpy.isneginf(np.nan)
返回False
,因为NaN
首先就不是一个数numpy.isinf(x[, out])
:返回x
是否是个无穷大的数,其中x
可以是标量,可以是数组numpy.isinf(np.nan)
返回False
,因为NaN
首先就不是一个数
下列函数用于对这几个特殊的数进行转换:
numpy.nan_to_num(x)
:将x
中的下列数字替换掉,返回替换掉之后的新数组:NaN
:替换为 0- 正无穷:替换为一个非常大的数字
- 负无穷:替换为一个非常小的数字
4. meshgrid
numpy.meshgrid(x,y)
:返回两个向量的网格。
x
和y
均为一维的数组,代表网格的x
轴和y
轴坐标- 返回一个元组
(X,Y)
,其中X
是个数组,它是由x
沿着第一维扩展成(y.size,x.size)
大小的数组;Y
也是个数字。它是y
先转置,再沿着 第二维扩展成(y.size,x.size)
大小的数组
5. 升维
在对数组切片时,可以插入 None
或者 numpy.newaxis
来对切片之后的结果升维。它们被插入的位置就是被增加的维度:
6. 行向量、列向量
行向量的形状为 (1,n)
,列向量的形状为 (n,1)
。行向量与列向量可以通过转置操作完成相互转换。
注意:不是 (n,)
- 生成行向量的方法:
np.c_[n_1,n_2]
:其中n1
,n2
等等均为数字 - 生成列向量的方法:
np.c_[n_1,n_2].T
:其中n1
,n2
等等均为数字
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论