[英]Adding a row vector to a 3-D numpy array
假設我在 numpy 中有一個 3-D 數組
a = [ [[1,2], [3,4]] , [[5,6], [7,8]] ]
我想向矩陣添加一個新的行向量,以便輸出例如,如果我想將行向量 [9,10] 添加到 3d 數組中的第二個矩陣:
a = [ [[1,2], [3,4]] , [[5,6], [7,8], [9,10]] ]
我知道如何使用np.append
將行向量添加到二維數組。 但我不知道如何用 3-D 數組來做到這一點。 我曾嘗試使用np.append
但我得到的只是維度錯誤、扁平數組或只是錯誤的數組。 在 numpy 中執行此操作的正確方法是什么?
Numpy 進行內存優化並創建您請求的大小的np.ndarray
。 最好一次創建一個您需要的大小的數組並對其進行操作,而不是多次添加新行。
因此,如果您將使用許多附加:使用列表。 如果您知道總大小:使用 numpy 數組。
您面臨的另一個問題是:形狀不統一。 那是
a = np.array([ [[1,2], [3,4]] , [[5,6], [7,8]] ])
# a.shape is (2, 2, 2)
new_a = np.array([ [[1,2], [3,4]] , [[5,6], [7,8], [9, 10] ]])
# What is the shape of new_a?
可以執行您想要的操作的代碼是:
import numpy as np
a = np.array([ [[1,2], [3,4]] , [[5,6], [7,8]] ])
b = np.array([9,10])
res = np.zeros(a.shape[0], dtype="object")
res[0] = a[0]
res[1] = np.zeros((a.shape[1]+1, a.shape[2]))
res[1, :-1] = a[1, :]
res[1, -1] = b
您可以實現如下目標,但問題仍然是這在多大程度上是明智的,因為使用具有dtype=object
的數組進行矢量化變得更加困難。 但是你去吧:
import numpy as np
a = np.array([ [[1,2], [3,4]] , [[5,6], [7,8]] ])
b = np.array([9,10])
res = np.array([a[0],np.vstack([a[1],b])],dtype=object)
輸出:
array([array([[1, 2],
[3, 4]]), array([[ 5, 6],
[ 7, 8],
[ 9, 10]])], dtype=object)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.