繁体   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