#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)
ошибки нет.