gpt4 book ai didi

python - Numpy:无法将输入数组从形状 (3) 广播到形状 (1)

转载 作者:行者123 更新时间:2023-12-01 08:23:52 26 4
gpt4 key购买 nike

我想创建一个 numpy 数组 b,其中每个组件都是一个二维矩阵,其维度由向量 a< 的坐标确定/em>

我所做的以下事情令我满意:

>>> a = [3,4,1]
>>> b = [np.zeros((a[i], a[i - 1] + 1)) for i in range(1, len(a))]
>>> np.array(b)
array([ array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]]),
array([[ 0., 0., 0., 0., 0.]])], dtype=object)

但是如果我发现这种病态的情况不起作用:

>>> a = [2,1,1]
>>> b = [np.zeros((a[i], a[i - 1] + 1)) for i in range(1, len(a))]
>>> b
[array([[ 0., 0., 0.]]), array([[ 0., 0.]])]
>>> np.array(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not broadcast input array from shape (3) into shape (1)

最佳答案

我将提出问题的解决方案,但请考虑评论中所说的内容。未对齐的 Numpy 数组会阻止大多数有用的操作发挥其魔力。考虑改用列表。

话虽这么说,确实是一个奇怪的错误。我通过在基本的 for 循环中进行分配而不是使用 np.array 调用来使事情正常工作。

a = [2,1,1]
b = np.zeros(len(a)-1, dtype=object)
for i in range(1, len(a)):
b[i-1] = np.zeros((a[i], a[i - 1] + 1))

结果:

>>> b
array([array([[0., 0., 0.]]), array([[0., 0.]])], dtype=object)

关于python - Numpy:无法将输入数组从形状 (3) 广播到形状 (1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54429579/

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