gpt4 book ai didi

python - 根据另一个数组填充numpy数组直到位置

转载 作者:行者123 更新时间:2023-12-01 01:38:16 25 4
gpt4 key购买 nike

    import numpy as np
arr_keys = np.array(np.mat('2 3 1 0; 3 3 3 1'))
arr_rand1 = np.random.rand(2, 4)
arr_rand2 = np.random.rand(2, 4)

arr_final = np.zeros((5, 2, 4))

我想创建一个名为 arr_final 的 numpy 数组,形状为 (100, 2, 4),其中 100 可以被认为对应于时间,2、4 分别是行数和列数为了填充 arr_final,我想使用以下逻辑:

  1. 对于arr_final中的每个网格单元,在arr_keys中相应位置查找值,我们称之为val_alpha

  2. 使用 arr_rand1 中的值填充 arr_final 直至 val_alpha 位置,并使用 arr_rand2 中的值之后

这可以使用 for 循环来完成,但是有没有更 Pythonic 的解决方案?

--编辑:

这是 for 循环解决方案:

for (i, j, k), value in np.ndenumerate(arr_final):
val_alpha = arr_keys[j][k]
arr_final[:val_alpha, j, k] = arr_rand1[j, k]
arr_final[val_alpha:, j, k] = arr_rand2[j, k]

最佳答案

我们可以利用 broadcasting boolean-indexing/masking -

L = 5 # length of output array
mask = arr_keys > np.arange(L)[:,None,None]
arr_final_out = np.where(mask,arr_rand1,arr_rand2)

关于python - 根据另一个数组填充numpy数组直到位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52172185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com