我有一个NumPy数组如下:arr = np.array([np.zeros(s) for s in range(2, 10)])
我想把每个子数组从形状(s)
整形为形状(1, s)
,所以我写了这个:arr = np.array([np.zeros(s).reshape(1, s) for s in range(2, 10)])
但是,会引发ValueError:ValueError: could not broadcast input array from shape (2,) into shape (1,)
我该怎么补救呢?
1条答案
按热度按时间g0czyy6m1#
在numpy 1.23中
你的list comprehension会产生大小不同的数组:
尝试从生成警告(你看到了吗?)和错误的数组:
即使使用
object
dtype,我们也会得到错误:但是如果我们去掉前面的大小为1的形状,我们可以创建一个“不规则”的对象dtype数组:
从这些(1,s)形状创建一个对象dtype数组需要一个更间接的构造--创建一个
np.empty(n, object)
数组,然后用列表填充它。numpy 1.24
在最新版本中,错误消息有所不同,但问题仍然存在:
和对象dtype: