gpt4 book ai didi

python - Numpy ValueError 将元组列表广播到数组中

转载 作者:太空宇宙 更新时间:2023-11-03 15:39:40 25 4
gpt4 key购买 nike

我正在使用 numpy 广播观察到一些奇怪的行为。问题如下所示,运行第一段代码会产生错误:

A = np.ones((10))
B = np.ones((10, 4))
C = np.ones((10))
np.asarray([A, B, C])

ValueError: could not broadcast input array from shape (10,4) into shape (10)

如果我改为使用 B = np.expand_dims(B, axis=0) 扩展 B 的维度,它将成功创建数组,但现在(毫不奇怪)错误尺寸:

array([array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]),
array([[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]]]),
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])], dtype=float32)

为什么它无法广播第一个示例,我怎样才能得到如下所示的数组(注意第二个数组周围只有双括号)?非常感谢任何反馈。

array([array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]),
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]]),
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])], dtype=object)

最佳答案

例如,包括 None 会阻止广播,因此可以选择此解决方法:

np.asarray([A, B, C, None])[:-1]

这里是结果:

array([array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.]),
array([[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]]),
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])], dtype=object)

关于python - Numpy ValueError 将元组列表广播到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53376823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com