Все ваши фрагменты кода указывают, что вы хотите, чтобы вычитание происходило только в первой строке A
(хотя вы явно не упомянули об этом).Итак, я продолжаю с этим пониманием.
Что касается использования from_function()
, вы можете использовать subtraction_matrix
, как показано ниже:
A[0,1:] -= subtraction_matrix[1:]
Проверка его(принимая форму (5,5)
вместо (50,50)
):
import numpy as np
A = np.arange(25).reshape(5,5)
print (A)
func = lambda j: j * 10 #some simple calculations
subtraction_matrix = np.fromfunction(np.vectorize(func), (5,), dtype=A.dtype)
A[0,1:] -= subtraction_matrix[1:]
print (A)
Вывод:
[[ 0 1 2 3 4] # print(A), before subtraction
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
[[ 0 -9 -18 -27 -36] # print(A), after subtraction
[ 5 6 7 8 9]
[ 10 11 12 13 14]
[ 15 16 17 18 19]
[ 20 21 22 23 24]]
Если вы хотите вычитаниечтобы происходить в всех строках A
, вам просто нужно использовать строку A[:,1:] -= subtraction_matrix[1:]
вместо строки A[0,1:] -= subtraction_matrix[1:]