geekdoc-python-zh/docs/askpython/numpy-nanprod.md

4.8 KiB
Raw Permalink Blame History

numpy 纳米棒–完整指南

原文:# t0]https://www . aspython . com/python-modules/num py/numpy-nanprod

你好,欢迎来到这个关于 Numpy nanprod 的教程。在本教程中,我们将学习 NumPy nanprod()方法,也将看到许多相同的例子。让我们开始吧!

也读作:【Numpy trunc()——返回输入的截断值,逐元素


什么是 NumPy nanprod

在 Python 中NaN 表示的不是数字。如果我们有一个包含一些 NaN 值的数组,并且想要找到它的乘积,我们可以使用 NumPy 的nanprod()方法。

NumPy 中的nanprod()方法是一个函数,它返回通过将数组中的 NaN 值视为等于 1 而计算的数组元素的乘积。它可以是所有数组元素的乘积、沿行数组元素的乘积或沿列数组元素的乘积。

我们将在本教程的下一节看到每个例子。


纳米棒语法

numpy.nanprod(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)

| 参数 | 描述 | 必需/可选 | | (类似数组) | 需要其产品的输入数组。 | 需要 | | 轴 | 沿其计算数组乘积的轴。它可以是 axis=0即沿列也可以是 axis=1即沿行或者 axis=None这意味着要返回整个数组的乘积。 | 可选择的 | | 数据类型 | 要返回的数组的数据类型。 | 可选择的 | | 在外 | 放置结果的替代输出数组。它必须具有与预期输出相同的形状。 | 可选择的 | | keepdims (bool) | 如果设置为真,减少的轴将作为尺寸为 1 的尺寸留在结果中。使用此选项,结果将根据输入数组正确传播。 | 可选择的 | | 最初的 | 产品的起始值。 | 可选择的 | | 在哪里 | 产品中包含的元素。 | 可选择的 |

返回: 一个与 a 形状相同的数组,该数组包含 a 的元素的乘积,将 NaN 值视为 1沿给定的轴并移除指定的轴。如果 axis=None则返回一个标量它是整个数组的乘积。


numpy.nanprod()的示例

numpy.nanprod()函数用于计算给定轴上数组元素的乘积,忽略 nan。让我们通过一些例子来看看numpy.nanprod()的用法。

使用 numpy.nanprod()的整个数组的乘积

一维数组

import numpy as np

a = np.array([6, np.nan, 7])
product = np.nanprod(a)
print("a =", a)
print("Product of the array =", product)

输出:

a = [ 6\. nan  7.]
Product of the array = 42.0

在上面的代码中,数组包含一个 NaN 值。在计算乘积时,nanprod()函数将 NaN 值视为 1并将乘积计算为 617 = 42。

二维数组

import numpy as np

a = np.array([[6, np.nan, 7], [np.nan, np.nan, 3]])
product = np.nanprod(a)
print("a =", a)
print("Product of the array =", product)

输出:

a = [[ 6\. nan  7.]
 [nan nan  3.]]
Product of the array = 126.0

将所有 NaN 值视为 1乘积= 61711*3 = 126。


沿着轴的产品

列式产品

import numpy as np

a = np.array([[np.nan, np.nan, 4],
              [5, np.nan, 10]])

# product along axis=0 i.e. columns
product = np.nanprod(a, axis=0)
print("a =", a)
print("Product of the array =", product)

输出:

a = [[nan nan  4.]
 [ 5\. nan 10.]]
Product of the array = [ 5\.  1\. 40.]

将 NaN 值视为 1 列 0 乘积= 15 = 5 列 1 乘积= 11 = 1 列 2 乘积= 4*10 = 40

逐行乘积

import numpy as np

a = np.array([[np.nan, np.nan, 4],
              [5, np.nan, 10]])

# product along axis=1 i.e. rows
product = np.nanprod(a, axis=1)
print("a =", a)
print("Product of the array =", product)

输出:

a = [[nan nan  4.]
 [ 5\. nan 10.]]
Product of the array = [ 4\. 50.]

将 NaN 值视为 1 第 0 行乘积= 114 = 4 第 1 行乘积= 5110 = 50


空数组和全 NaN 数组的乘积

import numpy as np

# empty arrays
a = []
b = [[]]

product_a = np.nanprod(a)
print("a =", a)
print("Product of the 1-d empty array =", product_a)

product_b = np.nanprod(b)
print("b =", b)
print("Product of the 2-d empty array =", product_b)

# all NaN array
c = [np.nan, np.nan, np.nan]
product_c = np.nanprod(c)
print("c =", c)
print("Product of the all NaN array =", product_c)

输出:

a = []
Product of the 1-d empty array = 1.0
b = [[]]
Product of the 2-d empty array = 1.0
c = [nan, nan, nan]
Product of the all NaN array = 1.0

当对所有空数组和只包含 NaN 值的数组应用nanprod()方法时,它们返回 1。


结论

仅此而已!在本教程中,我们学习了 Numpy nanprod 方法,并使用该方法练习了不同类型的示例。


参考