我有一维不同长度的np.arrays。 将它们分成具有相同长度n(= 384)并保留最后一个子阵列(更短)的子阵列的最pythonic方法是什么?
答案 0 :(得分:1)
假设x
是一维数组,您可以这样做:
x = x[:384 * (x.shape[0] // 384)].reshape(-1, 384)
x
现在的形状为(n, 384)
。您可以访问x[i]
0 <= i < n
。
答案 1 :(得分:1)
取决于“子阵列”的含义。
如果您想要一个大小为384 ndarray
个对象的列表,这完全按照您的要求执行:
np.split(x, np.arange(0, x.size, 384))[:-1]
你可以将它包装在nd.array()
中以获得相当于@COLDSPEED的输出,但可能会慢一些。
这样做的真正好处是,如果要将大小不同的ndarrays
加入到一个n x 384
数组中,列表的连接可能比ndarray
个对象的连接更快/ p>