返回介绍

Numpy 技巧

发布于 2024-05-19 17:58:10 字数 4358 浏览 0 评论 0 收藏 0

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 划分为若干个区间)

其个参数名字为:

  • aarray-like 对象,为输入数据。如果是多维数组则展平为一维
  • bins
    • 如果为整数,则它定义了在指定 range 内的等宽度长条的数量
    • 如果为整数序列,则它定义了长条的底边
    • 如果为字符串,则比较复杂,具体可参考文档
  • range :所有等宽长条的下界和上界。如果未提供则结果是元组 (a.min(),a.max()) 。如果 a 有元素值在它之外,则忽略该元素。
  • normed :该关键字是 deprecated
  • weights :权重数组。它是 a 形状相同,它给出了对应的 a 中的元素的权重。如果 desityTrue ,则该数组被归一化。
  • density :如果为 False ,则结果是每个长条的样本数量;如果为 True 则结果是每个长条的频率值(估计密度函数)。

注意: matplotlib.pyplot 也有一个建立直方图的函数( hist(...) ),区别在于 matplotlib.pyplot.hist(...) 函数会自动绘直方图,而 numpy.histogram 仅仅产生数据

hist

histogram

3. NaN 和无穷大

numpy 中,有几个特殊的数:

  • numpy.nan 表示 NaNNot 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) :返回两个向量的网格。

  • xy 均为一维的数组,代表网格的 x 轴和 y 轴坐标
  • 返回一个元组 (X,Y) ,其中 X 是个数组,它是由 x 沿着第一维扩展成 (y.size,x.size) 大小的数组; Y 也是个数字。它是 y 先转置,再沿着 第二维扩展成 (y.size,x.size) 大小的数组

    meshgrid

5. 升维

在对数组切片时,可以插入 None 或者 numpy.newaxis 来对切片之后的结果升维。它们被插入的位置就是被增加的维度:

insert_axis

6. 行向量、列向量

行向量的形状为 (1,n) ,列向量的形状为 (n,1) 。行向量与列向量可以通过转置操作完成相互转换。

注意:不是 (n,)

  • 生成行向量的方法: np.c_[n_1,n_2] :其中 n1n2 等等均为数字
  • 生成列向量的方法: np.c_[n_1,n_2].T :其中 n1n2 等等均为数字

row_column_vector

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文