Я должен применить функцию, которая делит значение на другое для каждой строки массива numpy.
здесь функция:
def myfunc(a, b):
return (a/b)
мой numpy ndarray выглядит следующим образомпредставляет значение "a":
[[ 1 2 3 4 ]
[ 5 6 7 8 ]]
и мой список, который является моим значением b, выглядит следующим образом:
[1, 2, 3, 4]
Результат, который я хочу получить:
[[1 1 1 1]
[5 3 2.33 2]]
Для этого я не могу использовать цикл, поэтому я попытался с помощью np.vectorize.Вот мой код:
test = np.vectorize(myfunc)
test(a, b)
это возвращение:
array([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
[1]
<NDArray 1 @cpu(0)>,
[1]
<NDArray 1 @cpu(0)>,
[1]
<NDArray 1 @cpu(0)>,
[1]
<NDArray 1 @cpu(0)>]]]]]]]]]]]]]]]]]]]]]]]]]]]]]],
...
, поэтому каждая ячейка делится 4 раза на первое значение b.
, но по неизвестной причине мойкод не работает для ndarray.когда я пытался с обычным массивом, это работает.Пример:
a = np.array([[1, 2, 3, 4], [5,6,7,8]])
b = [1,2,3,4]
def my(coord, shape):
return (coord/shape)
myfunc = np.vectorize(my)
myfunc(a, b)
результат:
array([[1. , 1. , 1. , 1. ],
[5. , 3. , 2.33333333, 2. ]])
Ребята, вы знаете, что я могу сделать?Я действительно не знаю, как получить ndarray, и почему я не могу получить правильный результат.