簡體   English   中英

跨多個維度重復一維數組中的值

[英]Repeat values in 1D array across multiple dimensions

我有一個一維 CO2 值數組,我需要在 lon/lat 維度 [360, 720] 上重復每個值,創建一個數組 [365, 360, 720] - 即 1 年跨經度和緯度的每日 CO2 值.

我想要一個數組:

a = np.array([343.79258065, 343.79096774, 343.78935484])

然后將第一個值平鋪在一組昏暗 [360, 720] 上,然后將第二個值平鋪在相同的昏暗 [360, 720] 上,並對數組中的 n 個值執行此操作(在我的情況下為 365 次)

一個小的暗淡例子是(但請注意下面我想要的暗淡):

array([[343.79258065, 343.79258065, 343.79258065, ...],
[343.79096774, 343.79096774, 343.79096774, ...],
[343.78935484, 343.78935484, 343.78935484, ...]])

輸出尺寸

如此有效地,數組a每個值都將在 365 層的暗淡數組 [360, 720] 上重復(平鋪?),從而產生暗淡 [365, 360, 720] 的 3D 數組。

如果可能的話,用broadcast_to()解決這個問題會很棒。 一些不太符合我的要求的鏈接: 重復值 n 次在多個維度上重復

我希望我能正確理解你的問題! 我會首先將數組重塑為(N,1,1) ,然后使用 numpy 的np.repeat函數將每個 1x1 子數組擴展為您想要的重復數組 (360, 720)。 這是我如何做到的:

a = np.array([343.79258065, 343.79096774, 343.78935484]).reshape(-1,1,1)
a = np.repeat(a, 360, axis=1)
a = np.repeat(a, 720, axis=2)
print(a.shape)
>> (3, 360, 720)

如果這不是您的想法,請告訴我! 順便說一下, N 360x720 數組中的每一個只包含初始數組 ( a[i] ) 的第i個值的重復實例。

我添加了一個broadcast_to()答案,用戶奇怪地回復了這個答案,然后刪除了,因為我確實問過在原始問題中是否可行。 感謝@dsillman2000 和幻影用戶。

np.broadcast_to(a.reshape(-1,1,1), (len(a),360,720))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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