[英]Creating 2D array with values in python with values from another array
我正試圖在 python 中更好地編碼,但被困在一個相當標准的問題上。 我有一個給定的數組,需要創建一個雙倍行的數組。 新數組應該以這樣一種方式對應於原始數組,即新數組中的兩行包含與原始數組中的一個值相同的值。 我正在使用 Python 3.7 和 numpy 數組。
例子:
original_array = [[1,2,3],
[4,5,6],
[7,8,9]]
result = [[1,2,3],
[1,2,3],
[4,5,6],
[4,5,6],
[7,8,9],
[7,8,9]]
有一種手動方法可以做到這一點:
result = np.zeros((original_array.shape[0]*2, original_array.shape[1]))
for i in range(result.shape[0]):
result[i]=original_array[i//2]
但是,由於我的應用程序處理非常大的數組,因此我嘗試盡可能多地使用庫函數。 經過一番搜索,我想出了以下內容:
result = np.fromfunction(lambda i,j: original_array[i//2][j],
(original_array.shape[0]*2, original_array.shape[1]),
dtype=int)
但是,此調用會生成一個 4D 數組,其中大部分值僅來自第一行,因此它顯然無法按預期方式工作。
為什么這個調用會失敗,我怎樣才能達到想要的效果?
編輯:
我發現了呼叫失敗的原因。 np.fromfunction(...) 不直接迭代索引,而是將它們作為數組提供。 當生成的數組與原始數組的大小不同時,原始數組對索引的訪問不再以預期的方式工作。
使用 np.repeat(...) 作為 StupidWolf 建議的作品。
您可以使用 np.repeat:
np.repeat(original_array,2,axis=0)
array([[1, 2, 3],
[1, 2, 3],
[4, 5, 6],
[4, 5, 6],
[7, 8, 9],
[7, 8, 9]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.