【问题标题】:Adding all the rows of an array after formating Numpy Python格式化 Numpy Python 后添加数组的所有行
【发布时间】:2021-06-09 22:15:01
【问题描述】:

如何将多维 numpy 数组的每一行的所有元素相加。我正在尝试将“--”元素转换为0,然后在之后添加所有行。我怎么能做这种事?掩码数组结果的-- 元素。

Array = np.array([[--, --, --, --, --, --, --]
 [3, 4, --, --, --, --, --]
 [--, --, 5, 7, 8, 10, --]
 [--, --, --, --, --, --, --]
 [--, --, --, --, --, --, 20]])
np.where(Array != "--", result, 0)
Array.sum(axis=0)

预期输出:

[0 7 30 0 20]

【问题讨论】:

  • --s 应该用引号括起来吗? "--"
  • 它实际上是在格式化一个数组之后给出的——对于Array中的空格。
  • Array = np.array([[--, --, --, --, --, --, --] [3, 4, --, --, --, --, --] [--, --, 5, 7, 8, 10, --] [--, --, --, --, --, --, --] [--, --, --, --, --, --, 20]]) 应该会抛出错误。
  • 这是一个掩码数组还是字符串和数字的混合数组(这是一个对象数组)?如果您提供如何获得此数组,将会有所帮助。谢谢
  • @QWERTYL 你喜欢 Ehsan 说它是一个掩码数组

标签: python arrays function numpy multidimensional-array


【解决方案1】:
import numpy as np

array = np.ma.array(
    [
        [0, 0, 0, 0, 0, 0, 0],
        [3, 4, 0, 0, 0, 0, 0],
        [0, 0, 5, 7, 8, 10, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 20]
    ],
    mask=[
        [1, 1, 1, 1, 1, 1, 1],
        [0, 0, 1, 1, 1, 1, 1],
        [1, 1, 0, 0, 0, 0, 1],
        [1, 1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 0]
    ]
)

array = array.filled(0)
print(np.sum(array, axis=1))

或者,如果您想在填充零之前对掩码数组应用总和:

array.fill_value = 0
print(np.ma.sum(array, axis=1).filled(0))

【讨论】:

    【解决方案2】:

    你可以这样做

    >>> np.where(arr == '--', 0, arr).astype(int).sum(1)
    array([ 0,  7, 30,  0, 20])
    

    【讨论】:

    • 这不起作用,因为-- 元素是掩码数组,抱歉更新了问题。
    猜你喜欢
    • 2021-06-02
    • 2021-12-02
    • 2021-05-19
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2021-11-02
    相关资源
    最近更新 更多