python / numpy一次将子数组组合4行

lee.edward01:

我有一个按行划分的numpy数组:

splitArray:


[[0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0]]

我希望每4行合并一次所说的splitArray,最后一个子数组不必一定是4,而剩下的只是剩下的。

以下是我希望拥有的数组:

joinedArray:


[[0,   0,   0,   0,   0,   0,  0,
  0,   0,   0,   0,   0,   0,  0,
  0,   0,   0,   0,   0,   0,  0,
  0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0,
  0,   0,   0,   0,   0,   0,  0,
  0,   0,   0,   0,   0,   0,  0,
  0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0,
  0,   0,   0,   0,   0,   0,  0,
  0,   0,   0,   0,   0,   0,  0,
  0,   0,   0,   0,   0,   0,  0],
 [0,   0,   0,   0,   0,   0,  0,
  0,   0,   0,   0,   0,   0,  0]]
Kasramvd:

作为一种纯粹的Numpythonic方法,您可以通过创建从分块号到行数的范围(以分块号为的steparg)找到用于拆分数组的所有所需索引range然后使用np.split()拆分数组:

In [24]: def chunk_array(arr, ch):
    ...:     x = arr.shape[0]
    ...:     return np.split(a, np.arange(ch, x, ch))
    ...: 
    ...: 

演示:

In [25]: chunk_array(a, 4)
Out[25]: 
[array([[0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0]]), array([[0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0]]), array([[0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0]]), array([[0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0]])]

In [26]: chunk_array(a, 3)
Out[26]: 
[array([[0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0]]), array([[0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0]]), array([[0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0]]), array([[0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0]]), array([[0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0]])]

如果您希望将分块的数组连接在一起,则可以在列表推导中使用@jpp的答案,np.concatenate()使用map或稍有不同。

In [75]: def chunk_array(arr, ch):
    ...:     x = arr.shape[0]
    ...:     return [np.concatenate(subs) for subs in np.split(arr, np.arange(ch, x, ch))]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python / NumPy第一次出现被遮罩的子数组

python中的数组组合

Python n 维数组组合

如何在Python中一次将Exif方向支持多个图像的Exif方向将图像文件加载到numpy数组中?

一次在整个numpy数组上进行python类型转换

Python 将元组组合在一起

将文本附加到第一次出现的新行的 Python 代码

Numpy / Python一次过滤多个列

如何在 python 中一次更改图像(3D NumPy 数组)的所有特定值?

Python数组组计数

将3d数组组合成numpy中的4d数组

Python Numpy 数组多组合

将最后一次迭代存储在循环中(python)

在Python中一次读取stdin行

每隔14行python更改一次信息

在Python 3.4.3中一次将两个字符串列表组合在一起

迭代python列表值,其中每个组合仅出现一次,但位置独立

python获取每个成员仅出现一次的组合组

在python中组合多个波形一次播放多个音符?

Numpy:将一维数组(行)添加到 Numpy Python 中的空二维数组

将numpy数组的每一行与第二个numpy数组的所有行相加(python)

Python:N次连接(或克隆)一个numpy数组

数组列表中每个数组组合的余弦相似度分数 Python

Python-如何将数组添加到唯一的numpy数组?每个数组必须代表我的numpy数组中的一行

Python:将正则表达式组组合成一个非分组形式的正则括号内的一个

Python / Numpy子数组选择

Python:生成范围内值的所有n长度数组组合

快速组合,无需替换数组-NumPy / Python

Python numpy数组合并操作