【问题标题】:How can I use a mod in an array using numpy如何使用 numpy 在数组中使用 mod
【发布时间】:2023-03-28 00:57:01
【问题描述】:

假设我有一个数组

a = ([6,8,10,13,15,18,21])

我还有一个数组

b= ([2,5])

我想返回一个数组,它给我 a%b 的非零值。如果 a mod 中的任何值 b 中的任何值都为零,我不想返回它。

c = ([13,21])

使用numpy.mod(a,b) 返回

ValueError:操作数无法与形状一起广播

我该如何执行?

【问题讨论】:

  • a[np.mod.outer(a, b).all(1)]?

标签: python arrays numpy mod


【解决方案1】:

问题是指numpy无法对给定形状的数组应用np.mod操作,一种解决方案是reshape,例如:

import numpy as np

a = np.array([6, 8, 10, 13, 15, 18, 21]).reshape((-1, 1))
b = np.array([2, 5])

print(a[np.mod(a, b).all(1)].reshape(-1))

输出

[13 21]

请注意,您需要重新整形才能获得请求的输出。最好的解决方案是@PaulPanzer 提出的:

import numpy as np

a = np.array([6, 8, 10, 13, 15, 18, 21])
b = np.array([2, 5])

print(a[np.mod.outer(a, b).all(1)])

输出

[13 21]

进一步

  1. 关于 numpy 广播,请参阅 12
  2. 开启outer

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 1970-01-01
    • 2017-07-04
    • 2020-08-02
    • 2021-10-09
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多