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

Python 将np.array拆分为具有相同长度的子阵列,python,arrays,numpy,split,Python,Arrays,Numpy,Split,我有不同长度的一维np数组。 将它们拆分为具有相同长度n(=384)的子阵列并保留最后一个子阵列(较短)的最适合的方法是什么?假设x是1D阵列,可以执行以下操作: x = x[:384 * (x.shape[0] // 384)].reshape(-1, 384) x现在具有形状(n,384)。您可以使用x[i]访问每个区块,其中0取决于“子数组”的含义 如果您想要一个大小为384ndarray的对象列表,这完全符合您的要求: np.split(x, np.arange(0, x.size,

我有不同长度的一维np数组。
将它们拆分为具有相同长度n(=384)的子阵列并保留最后一个子阵列(较短)的最适合的方法是什么?

假设
x
是1D阵列,可以执行以下操作:

x = x[:384 * (x.shape[0] // 384)].reshape(-1, 384)
x
现在具有形状
(n,384)
。您可以使用
x[i]
访问每个区块,其中
0取决于“子数组”的含义

如果您想要一个大小为384
ndarray
的对象列表,这完全符合您的要求:

np.split(x, np.arange(0, x.size, 384))[:-1]
您可以将其包装在
nd.array()
中,以获得与@COLDSPEED等效的输出,但可能会稍微慢一点


这样做的真正好处是,如果您想将许多大小不同的
ndarray
合并到一个
nx384
数组中,列表的串联可能比
ndarray
对象的串联要快。请注意:如果x是一个1D numpy数组,那么可以使用
x.shape[0]//384
来加速截断操作。