使用for循环中的另一个值填充新的numpy数组

时间:2016-02-25 20:55:53

标签: python numpy

我正在用numpy做一些愚蠢的事。尝试通过for循环使用来自另一个numpy数组的值填充一个for i in range(0,9998): a[i] = b[i] * c[i] 数组,如下所示:

.bbox

我收到以下错误:

  

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

如果a是您要为其指定特定值的现有数组,则需要执行

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

答案 1 :(得分:0)

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

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

你需要从像

这样的东西开始
a = np.zeros(10000,), dtype=float)

如果您希望这种循环起作用。