将np.array拆分为具有相同长度的子阵列

时间:2017-07-03 09:52:39

标签: python arrays numpy split

我有一维不同长度的np.arrays。 将它们分成具有相同长度n(= 384)并保留最后一个子阵列(更短)的子阵列的最pythonic方法是什么?

2 个答案:

答案 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>