【发布时间】:2019-12-07 06:23:37
【问题描述】:
我已经用零初始化了一个用于内存管理的 numpy 数组,我正在尝试将数据写入循环中的每一列。
我来自 Matlab 背景,所以我的代码类似于:
myArray = np.zeros((250000, 100))
for i in range(100):
x = np.random.rand(250000) # random just to show behavior
myArray[:,i] = x
我收到了Value Error: could not broadcast input array from shape (250000,1) into shape (250000)。
我看到myArray[:,i].shape 是(250000,),但我不确定如何找到(250000,1)。 Matlab 会隐式执行此操作。
【问题讨论】:
-
反之,你应该分配
= x.ravel()。但由于x在每个循环中都相同,您可以简单地执行myArray[:] = x。 -
重塑数组的常用方法是使用
array.reshape() -
无法重现错误。
-
什么是
x?那是你问题的根源。例如,如果x是一个常量,它就可以正常工作。 -
欢迎来到 SO!运行您提供的代码应该没有问题,因为我们任何人都不会出错。
x和myArray[:,i]的形状都是(250000,)。查看此帖子以了解有关形状的更多信息:stackoverflow.com/questions/22053050/…
标签: python numpy indexing array-broadcasting