Допустим, у меня есть массив
a = ([6,8,10,13,15,18,21])
У меня есть другой массив
b= ([2,5])
Я хочу вернуть массив, который дает мне ненулевые значения a% b. Если какое-либо значение в моде, любое значение в b равно нулю, я не хочу его возвращать.
c = ([13,21])
Использование numpy.mod(a,b) возвращает
ValueError: operands could not be broadcast together with shapes
Как я могу это выполнить?






Проблема связана с тем, что numpy не может применить операцию np.mod к массивам с заданной формой, одним из решений является изменение формы, например:
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]
Дальше
a[np.mod.outer(a, b).all(1)]?