gpt4 book ai didi

python - 从大于 2 维的 numpy 数组中选择随机窗口

转载 作者:太空宇宙 更新时间:2023-11-03 20:13:42 24 4
gpt4 key购买 nike

如何从大于 2 维的 numpy 数组中选择一个随机窗口,其中该窗口相对于 2 个不同的维度是随机的?

我想做一些与这篇文章中的答案类似的事情,但在 3 维,而不是 2 维: Selecting Random Windows from Multidimensional Numpy Array Rows

我试图矢量化的示例(即我试图避免 for 循环):

import random
import numpy as np

ls = []
m = 3 # sequence length
k = 8 #batch_size

np_3D_array = np.random.randint(0,100, size = (5,7,4)) #random 3D array

for ii in range(k):
random_sheet = random.randint(0,np_3D_array.shape[0] - 1)
random_row = random.randint(0, np_3D_array.shape[1] - m)
ls.append(np_3D_array[random_sheet, random_row:random_row + m , :])

final_output = np.array(ls)

print(final_output.shape) #prints (8, 3, 4) to stdoout

最佳答案

使用我的 window_nd 食谱 here

def sample_nd(arr, window_shape, axis, k = 1):
windows = window_nd(arr, window = window_shape, axis = axis)
windows = windows.reshape((-1,) + windows.shape[len(axis):])
index = np.random.randint(0, windows.shape[0], k)
return windows[index].squeeze()

sample_nd(np_3D_array, window_shape = (1, 3), axis = (0, 1), k = 8).shape

(8, 3, 4)

为了清楚起见,这里没有考虑到原始函数中的许多边缘情况(尤其是不能仅使用一个窗口/轴,除非它们被格式化为元组)。

关于python - 从大于 2 维的 numpy 数组中选择随机窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58586007/

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