python: объект ‘numpy.int32’ не может быть повторен при использовании reduce в списке numpy

#python #numpy

#python #numpy

Вопрос:

Я новичок в программировании на python. при использовании функции reduce() в массиве numpy (например, в этом коде):

 import numpy as np
from functools import reduce
x = np.arange(1, 5)    
y = list(reduce(lambda s, t: s   t, x))
 

Я получаю эту ошибку:

 TypeError: 'numpy.int32' object is not iterable
 

Я протестировал те же коды для функции map () и не обнаружил ошибок:

 import numpy as np
x = np.arange(1, 5)    
z = list(map(lambda s: s if s%2 == 0  else None, x))
 

Как я могу использовать функцию reduce для массива numpy?
Заранее благодарю.

Комментарии:

1. Вы уверены , что хотите использовать reduce ? Одной из сильных сторон numpy являются векторизованные функции, которые будут намного быстрее, чем reduce .

2. С одной стороны, это неэффективный способ взаимодействия с массивами NumPy. С другой стороны, я сбит с толку тем, что это не удается.

3. reduce возвращает значение int/float. Вы пытаетесь привести его к list

4. ( numpy.sum Однако используйте.)

5. или даже sum(range(5))

Ответ №1:

Я нашел свою ошибку!

функция reduce () обрабатывает одно значение, а не список. Итак, этот код,

 y = reduce(lambda s, t: s   t, x)
 

ошибки нет.