将未知长度的 numpy 2D 数组拆分为 3D 数组
Split numpy 2D Array with Unknown Length to 3D Array
我有一个 (18, 10525) numpy 数组。
18 列 10525 行,但行数并不总是相同,我必须将数组分成 18 列和组或 200 行的 windows 以将其提供给 AI。
比如我想做
data = np.ones((18, 10525))
data.reshape(-1,18,200)
但是 10525 不能被 200 整除,所以我得到 ValueError
。我想得到一个零填充的形状数组 (-1,18,200)。 IE。向数据添加零,直到我可以做到 .reshape(-1,18,200)
。提前致谢。
假设你想用零填充这里是你的解决方案
data = np.ones((18, 10525))
old_size = np.prod(data.shape)
rounded_up_size = (old_size//(18*200)+1)*18*200
reshaped_arr = np.empty(rounded_up_size)
reshaped_arr[:old_size] = data.reshape(-1)
reshaped_arr[old_size:] = 0
reshaped_arr.reshape(-1,18,200)
请注意,我避免复制所有数据。这只是对旧数据的看法。
我有一个 (18, 10525) numpy 数组。 18 列 10525 行,但行数并不总是相同,我必须将数组分成 18 列和组或 200 行的 windows 以将其提供给 AI。
比如我想做
data = np.ones((18, 10525))
data.reshape(-1,18,200)
但是 10525 不能被 200 整除,所以我得到 ValueError
。我想得到一个零填充的形状数组 (-1,18,200)。 IE。向数据添加零,直到我可以做到 .reshape(-1,18,200)
。提前致谢。
假设你想用零填充这里是你的解决方案
data = np.ones((18, 10525))
old_size = np.prod(data.shape)
rounded_up_size = (old_size//(18*200)+1)*18*200
reshaped_arr = np.empty(rounded_up_size)
reshaped_arr[:old_size] = data.reshape(-1)
reshaped_arr[old_size:] = 0
reshaped_arr.reshape(-1,18,200)
请注意,我避免复制所有数据。这只是对旧数据的看法。