我有多個大小相同的陣列,我想將每個單元格中的值連接起來,以產生一個大小相同的輸出陣列,但其中每個元素都是一個串列。我怎樣才能做到這一點呢?
示例。
Input:
a = [[1,2] 。
[3,4]]
b = [[5,6]。
[7,8]]
理想的輸出。
c = [[[1,5],[2,6]] 。
[[3,7], [4,8]] ]
我怎樣才能實作這一點?我的陣列實際上是NumPy陣列,如果這有幫助的話。
后續問題。迭代連接
第一個答案建議使用 np.dstack,這對上面的例子很有效。
我如何以迭代的方式進行連接?在獲得
之后c = [[[1,5], [2,6]] 。
[[3,7], [4,8]] ]
如果我有
d = [[9,10]。
[11,12 ]]
我想把c和d "串聯 "起來,得到
e = [[[1,5, 9],[2,6, 10]] 。
[[3,7,11] 。 [4,8,12 ]]
uj5u.com熱心網友回復:
你可以使用np.dstack.
>>> a
array([[1, 2],
[3, 4]])
>>> b
array([[5, 6],
[7, 8]])
>>> np.dstack((a,b))
array([[1, 5],
[2, 6]]。
[[3, 7] 。
[4, 8]])
參見help(np.dstack)獲取更多資訊和例子
>>> help(np.dstack)。
對函式dstack的幫助 in模塊numpy。
dstack(tup)
將陣列in序列按深度排列(沿第三軸)。
這是相當于在2D陣列之后沿第三軸進行連接。
形狀為`(M,N)`的陣列被重塑為`(M,N,1)` 和 1-D形狀的陣列
`(N,)`已被重塑為`(1,N,1)`。重新構建被`dsplit'分割的陣列。
`dsplit`。
這個函式對陣列具有最多3維的陣列最有意義。舉例來說
例如,對于像素資料具有高度(第一軸)、寬度(第二軸)。
和 r/g/b通道(第三軸)。函式`concatenate`、`stack` 和 `block`提供了更普遍的堆疊。
`block`提供了更普遍的堆疊和連接操作。
引數
----------
tup : 陣列的序列
這些陣列必須沿所有但第三軸具有相同的形狀。
1-D 或 2-D陣列必須有相同的形狀。
回傳
-------
stacked : ndarray
通過堆疊給定的陣列形成的陣列,將至少是3-D。
例子
--------
>>> a = np.array((1, 2, 3)
>>> b = np.array((2, 3, 4)
>>> np.dstack((a,b))
array([[1, 2],
[2, 3]。
[3, 4]])
>>> a = np.array([[1], [2], [3] ])
>>> b = np.array([[2], [3], [4] ])
>>> np.dstack((a,b))
array([[1, 2]]。
[[2, 3]]。
[[3, 4]])。)
uj5u.com熱心網友回復:
正如在其他答案/評論中提到的, np.dstack將是堆疊它們的正確方法。
然而,如果你想迭代添加專案(你問題的第2部分),你可以簡單地修改你想要的堆疊串列,以np.dstack,因為它只是參考了這個原始串列的元素。
如果這個最終的物件在每次迭代之后都需要是相同的,那么你可以簡單地用下一次迭代的輸出覆寫這個物件。
inp = [a,b,d,a,b,d] 。
l = []
for i in inp:
l.append(i)
print(np.dstack(l) )
print('--------'/span>)
。
[[1]
[2]]
[[3]
[[4]]。
-------
[[[1 5]
[2 6]]
[[3 7]
[4 8]]。
-------
[[[1 5 9]
[2 6 10]]
[[ 3 7 11]
[4 8 12] ] ]
-------
[[[1 5 9 1]]
[2 6 10 2]]
[[ 3 7 11 3]
[4 8 12 4] ] ]
-------
[[[1 5 9 1 5]]
[2 6 10 2 6 ]]
[[ 3 7 11 3 7 ]
[4 8 12 4 8 ]]
-------
[[[1 5 9 1 5 9]
[2 6 10 2 6 10] ]
[[ 3 7 11 3 7 11]
[4 8 12 4 8 12] ] ]
-------
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/322229.html
標籤:
上一篇:在PostgreSQL/node.js后端上從react-postgres"ReactApp"localhost:MYPORT運行`UPDATE`SQL命令時,"無法PU
下一篇:陣列的輸出相乘
