2013-07-18 3 views
3

У меня есть Numpy массив, и я пытаюсь умножить ее на скаляр, но он продолжает бросать ошибку:Как умножить Numpy массива на скаляр

TypeError: unsupported operand type(s) for *: 'numpy.ndarray' and 'int' 

Мой код:

Flux140 = ['0.958900', 'null', '0.534400'] 
n = Flux140*3 
+0

'Flux140' больше похоже на список строк, чем массив numpy. Элементы являются строками и, для правильного синтаксиса python, они пропускают кому между элементами. – user2304916

+2

Это определенно не список строк. Если бы это был список строк, '*' было бы повторением списка. Это похоже на 'print'ed представление массива объектов NumPy. – user2357112

+0

Вы уверены, что используете массив numpy? Похоже, что вы отправляете список, и вместо этого он должен быть массивом numpy. вы можете использовать аргумент 'type', чтобы определить, действительно ли это массив numpy – LeavesBreathe

ответ

1

Это массив строк. Вам нужен массив чисел. Разбор ввода с float или что-то перед созданием массива. (Что делать с этими 'null' s зависит от вашей заявки.)

+0

. Я попробовал это здесь: – user2596490

8

Проблема в том, что ваш массив dtype является строкой, а numpy не знает, как вы хотите умножить строку на целое число. Если бы это был список, вы бы повторяли список три раза, но массив вместо этого дал вам ошибку.

Попробуйте преобразовать массив dtype из строки в float, используя метод astype. В вашем случае, вы будете иметь проблемы с вашими 'null' значений, так что вы должны сначала преобразовать 'null' что-то другое:

Flux140[Flux140 == 'null'] = '-1' 

Затем вы можете сделать типа поплавка:

Flux140 = Flux140.astype(float) 

Если вы хотите, чтобы ваш 'null' быть что-то еще, вы можете изменить это первое:

Flux140[Flux140 == -1] = np.nan 

Теперь вы можете умножить:

tripled = Flux140 * 3 
Смежные вопросы