Python 用另一个';for循环中的s值

Python 用另一个';for循环中的s值,python,numpy,Python,Numpy,我在用numpy做一些蠢事。试图通过for循环用另一个数组的值填充一个numpy数组,如下所示: for i in range(0,9998): a[i] = b[i] * c[i] 我得到以下错误: “TypeError:'numpy.float64'对象不支持项分配” 顺便说一句,我需要这个循环(而不是仅仅乘以没有索引的数组),因为b和c是比我想要的a更长的数组,而且我找不到一种使numpy数组更短的优雅方法。提前感谢您的建议 您可以将b和c的切片相乘。就是 a = b[:9999

我在用
numpy
做一些蠢事。试图通过for循环用另一个数组的值填充一个
numpy
数组,如下所示:

for i in range(0,9998):
    a[i] = b[i] * c[i]
我得到以下错误:

“TypeError:'numpy.float64'对象不支持项分配”


顺便说一句,我需要这个循环(而不是仅仅乘以没有索引的数组),因为b和c是比我想要的a更长的数组,而且我找不到一种使numpy数组更短的优雅方法。提前感谢您的建议

您可以将b和c的切片相乘。就是

a = b[:9999] * c[:9999]
b
中的前9999项乘以
c
中的前9999项,并将值存储在
a
引用的长度为9999的数组中

如果
a
是要为其分配特定值的现有数组,则需要执行以下操作

a[:9999] = b[:9999] * c[:9999]

我怀疑你在做这样的事情:

In [281]: a=np.float64(0)

In [282]: a[0]=2
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-282-ed5200211ec0> in <module>()
----> 1 a[0]=2

TypeError: 'numpy.float64' object does not support item assignment

如果你想让这种循环起作用。

如果
b
c
比你想要的
a
长,那么切片不合适吗?这可能有助于提供更多关于您在这里尝试做什么的信息。你能提供完整的回溯吗?你是如何初始化a的?也许“a”已经被定义为一个numpy.float64实际上要做OP显示你需要做的事情
a[:9999]=b[:9999]*c[:9999]
。否则它只会创建一个新的
a
并“删除”旧的。但我想这就是产生错误的原因。
a = np.zeros(10000,), dtype=float)