正在尝试使用np.dstack并收到错误:
ValueError:解压缩的值太多(预期2)
以下是代码:
a = np.array((1,2,3))
b = np.array((2,3,4))
for x, y in np.dstack((a,b)):
print(x,",",y)
解决方案?
答案 0 :(得分:1)
在您的情况下,深度方式堆栈结果为
np.dstack((a,b))=
array([[[1, 2],
[2, 3],
[3, 4]]])
结果是一个形状数组(1,3,2)。因此,当您遍历此数组时,您将长度为3的对象分配给长度为2的元组,因此您得到了ValueError。
取决于你想要的,你可以
for x, y in np.dstack((a,b))[0]:
print(x,",",y)
或
for x, y, z in np.dstack((a,b)):
print(x,",",y)
答案 1 :(得分:0)
dstack返回一个3D数组,所以你需要迭代数组的第一个索引:
for x, y in np.dstack((a,b))[0]:
print(x,",",y)
您也可以使用stack:
for x, y in np.stack((a,b), axis=1):
print(x,",",y)
答案 2 :(得分:0)
目前尚不清楚你想做什么。
使用2个这样的数组的逻辑迭代是:
In [290]: a = np.array((1,2,3))
...: b = np.array((2,3,4))
...:
...:
In [291]: for x,y in zip(a,b):print(x,y)
1 2
2 3
3 4
或者只是使用'转置'的列表zip
方法:
In [292]: list(zip(a,b))
Out[292]: [(1, 2), (2, 3), (3, 4)]
dstack
在新的第3轴上组合了2个数组,产生了一个3d数组:
In [293]: np.dstack((a,b))
Out[293]:
array([[[1, 2],
[2, 3],
[3, 4]]])
In [294]: _.shape
Out[294]: (1, 3, 2)
对此进行迭代并没有多大意义。