如何将numpy数组乘以一个标量

3

我有一个numpy数组,想将它乘以一个标量,但一直出现错误提示:

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

我的代码是:

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

1
Flux140 看起来更像是一个字符串列表而不是 numpy 数组。元素是字符串,为了符合 Python 语法,它们之间缺少逗号。 - user2304916
2
这绝对不是一个字符串列表。如果它是一个字符串列表,那么 * 就会成为列表重复符号。这看起来像是一个 NumPy 对象数组的打印表示形式。 - user2357112
你确定你在使用numpy数组吗?看起来你提交的是一个列表,而不是numpy数组。你可以使用“type”参数来确定它是否真的是numpy数组。 - LeavesBreathe
2个回答

9
问题在于您的数组的数据类型是字符串,而numpy不知道您想如何将字符串乘以整数。如果它是一个列表,您将重复三次该列表,但使用数组会导致错误。
尝试使用astype方法将数组的数据类型从字符串转换为浮点数。在您的情况下,您将遇到“null”值的问题,因此您必须先将“null”转换为其他内容:
Flux140[Flux140 == 'null'] = '-1'

然后,您可以将类型设置为浮点型:
Flux140 = Flux140.astype(float)

如果您希望将'null'更改为其他内容,您可以首先进行更改:
Flux140[Flux140 == -1] = np.nan

现在你可以进行乘法运算:
tripled = Flux140 * 3

1
这是一个字符串数组。您需要一个数字数组。在创建数组之前,请使用“float”或其他方法解析输入内容。(如何处理那些“null”取决于您的应用程序。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接