3

我有一个 numpy 数组,我试图将它乘以一个标量,但它一直抛出一个错误:

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

我的代码是:

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

2 回答 2

9

问题是你的数组dtype是一个字符串,而 numpy 不知道你想如何将一个字符串乘以一个整数。如果它是一个列表,您将重复该列表三次,但一个数组反而会给您一个错误。

尝试使用该方法将数组dtype从字符串转换为浮点数。astype在您的情况下,您的'null'价值观会遇到问题,因此您必须首先转换'null'为其他内容:

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

然后你可以使类型浮动:

Flux140 = Flux140.astype(float)

如果你想让你'null'成为别的东西,你可以先改变它:

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

现在你可以乘:

tripled = Flux140 * 3
于 2013-07-18T16:54:46.970 回答
1

That's an array of strings. You want an array of numbers. Parse the input with float or something before making the array. (What to do about those 'null's depends on your application.)

于 2013-07-18T16:43:50.577 回答