#python #function #numpy
#python #функция #numpy
Вопрос:
Я хочу создать функцию, которая суммирует два массива numpy в новый массив тогда и только тогда, когда различные индексы являются euqal .
x = np.array([2,1,1,1])
y=np.array([2,1,0,1])
overlap = np.zeros(4)
for i in range(0,len(x)):
if x[i] == y[i]:
overlap[i]= x[i] y[i]
print(overlap)
[4. 2. 2. 2.]
Это сработало, как и ожидалось. Теперь я хочу определить функцию, но результат отличается, несмотря на то, что код точно такой же.
def sum_overlap(x,y):
overlap = np.zeros(4)
for i in range(0,len(x),1):
if x[i] == y[i]:
overlap[i] = x[i] y[i]
print(overlap)
sum_overlap(x,y)
[4. 0. 0. 0.]
[4. 2. 0. 0.]
[4. 2. 2. 0.]
[4. 2. 2. 2.]
Я думаю, что это как-то связано с итератором, но я не могу понять это.
Комментарии:
1. Вы печатаете несколько раз, но конечный результат один и тот же. И разве вы
return
не должны этого делать?
Ответ №1:
Ваш оператор print находится в цикле, поэтому каждый раз, когда он вызывается, он выводит список. Извлеките оператор print из цикла, но оставайтесь в функции, и ваши выходные данные должны быть одинаковыми
Ответ №2:
Рабочий код:
def sum_overlap(x,y):
overlap = np.zeros(4)
for i in range(0,len(x),1):
if x[i] == y[i]:
overlap[i] = x[i] y[i]
return overlap