use*_*577 6 python arrays numpy
我面临一个小问题,以某种方式组合数组.让我们说我们有
a=array([[1,1,1],[2,2,2],[3,3,3]])
b=array([[10,10,10],[20,20,20],[30,30,30]])
Run Code Online (Sandbox Code Playgroud)
我希望得到
c=array([[[1,1,1],[10,10,10]],[[2,2,2],[20,20,20]],[[3,3,3],[30,30,30]]])
Run Code Online (Sandbox Code Playgroud)
真正的问题是我的阵列a和b比3个坐标长得多!
我使用concatenate实现的最好的是:
concatenate((a,b),axis=2)
结果
array([[ 1, 1, 1, 10, 10, 10],
[ 2, 2, 2, 20, 20, 20],
[ 3, 3, 3, 30, 30, 30]])
这是相当不错但没有足够的深度.
此外,我尝试了另一个问题来获得所需的深度:
d=concatenate((a[...,None],b[...,None]),axis=2)
但结果是:
array([[[ 1, 10],
[ 1, 10],
[ 1, 10]],
[[ 2, 20],
[ 2, 20],
[ 2, 20]],
[[ 3, 30],
[ 3, 30],
[ 3, 30]]])
Run Code Online (Sandbox Code Playgroud)
哪个仍然不起作用......
嗯 zip(a,b)?
不是你想要的??
>>> a=array([[1,1,1],[2,2,2],[3,3,3]]);b=array([[10,10,10],[20,20,20],[30,30,30]
>>> zip(a,b)
[(array([1, 1, 1]), array([10, 10, 10])), (array([2, 2, 2]), array([20, 20, 20])), (array([3, 3, 3]), array([30, 30, 30]))]
Run Code Online (Sandbox Code Playgroud)
看起来你想要在0和1之间添加一个新轴,所以将None放在中间.这将使轴1移动到轴2并在1处创建新尺寸.如下所示:
a = array([[1,1,1],[2,2,2],[3,3,3]])
b = array([[10,10,10],[20,20,20],[30,30,30]])
c = concatenate((a[:, None, :], b[:, None, :]), axis=1)
>>> c
array([[[ 1, 1, 1],
[10, 10, 10]],
[[ 2, 2, 2],
[20, 20, 20]],
[[ 3, 3, 3],
[30, 30, 30]]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3914 次 |
| 最近记录: |