1
比方說,我有3D NumPy的ndarray
與形狀(n, 0, 2)
,我想連續填補它連同形狀(1,2)
的條目的第一維,使用一些功能像vstack
。「vstack」荷蘭國際集團在3D numpy的ndarray
換句話說,我想從(n, 0, 2)
ndarray
轉換爲(n, m, 2)
之一。但是,由於我不知道m
,我需要一些動態更新我的數組。
可能嗎?
比方說,我有3D NumPy的ndarray
與形狀(n, 0, 2)
,我想連續填補它連同形狀(1,2)
的條目的第一維,使用一些功能像vstack
。「vstack」荷蘭國際集團在3D numpy的ndarray
換句話說,我想從(n, 0, 2)
ndarray
轉換爲(n, m, 2)
之一。但是,由於我不知道m
,我需要一些動態更新我的數組。
可能嗎?
要建立一個3D陣列「動態」這是更好地收集子陣列在一個列表,並在年底
In [21]: alist = []
In [22]: for i in range(3):
alist.append(np.arange(i,i+8).reshape(2,4))
....:
In [23]: alist
Out[23]:
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[1, 2, 3, 4],
[5, 6, 7, 8]]), array([[2, 3, 4, 5],
[6, 7, 8, 9]])]
一旦收集它們可以在任何兼容的方式連接執行「堆疊」一旦。 np.array
在開始時將它們連接在一個新軸上。
In [24]: np.array(alist)
Out[24]:
array([[[0, 1, 2, 3],
[4, 5, 6, 7]],
[[1, 2, 3, 4],
[5, 6, 7, 8]],
[[2, 3, 4, 5],
[6, 7, 8, 9]]])
In [25]: _.shape
Out[25]: (3, 2, 4)
np.stack
可以做同樣的,也可以創建其他新中軸線的位置。
In [26]: np.stack(alist,axis=1).shape
Out[26]: (2, 3, 4)
concatenate
和vstack
加入在現有的軸線。
In [27]: np.concatenate(alist, axis=0).shape
Out[27]: (6, 4)
從具有0維度的數組開始是很差的練習。您不要fill it in
。最好你將它與其他3d陣列連接起來。這是一個緩慢且容易出錯的模仿,附加到[]
列表。
請您詳細說明一下。大小爲'(n,0,2)'的第一個數組有零個元素,並且將繼續存在,直到所有維數都大於零。我看不出如何通過添加/填充形狀元素'(1,2)'來實現這一點。 –
@HannesOvrén我更新了問題,希望現在更清楚。 – AreTor
我仍然不知道你應該如何從'(n,0,2)'到'(n,1,2)'以'(1,2)'數組作爲新數據。前者有'2n'個元素,但後者只有'2'個元素。 –