我有一个2D的numpy数组,假设它的形状为4x10(4行10列)。我有2个具有初始索引和最终索引的1D数组,所以它们都是20x1。例如,假设
initial = [1, 2, 4, 5]
final = [3, 6, 8, 6]
那我想得到
data[0,1:3]
data[1,2:6]
data[2,4:8]
data[3,5:6]
当然,每个数组的大小都会不同,因此我想将它们存储在列表中。如果要for
循环执行,则如下所示:
arrays = []
for i in range(4):
slice = data[i,initial[i]:final[i]]
arrays.append(slice)
有没有更有效的方法可以做到这一点?我宁愿避免使用for
循环,因为我的实际数据非常庞大。
您可以使用展numpy.split
平data
(使用numpy.ndarray.flatten
)和修改切片:
sections = np.column_stack([initial, final]).flatten()
sections[::2] += np.arange(len(initial)) * data.shape[1]
sections[1::2] += sections[::2] - np.array(initial)
np.split(data.flatten(), sections)[1::2]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句