簡體   English   中英

使用來自另一個數組的值在python中創建帶有值的二維數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM