python包,用于将数组拆分为子数组(即矩形平铺和矩形域分解),类似于“numpy.array_split”。

array-split的Python项目详细描述


array_split python packageTravisCI StatusAppVeyor StatusDocumentation StatusCoveralls StatusMIT Licensearray_split python package

python包是 对现有的改进 numpy.ndarray函数, 例如 numpy.array_splitskimage.util.view_as_blocksskimage.util.view_as_windows, 将多维数组细分为多个多维子数组(切片)。 示例应用程序区域包括:

并行处理
一个大(密集)数组被划分成更小的子数组,这些子数组可以是 由多个进程并发处理 (multiprocessingmpi4py)或其他内存有限的硬件 (例如,gpgpu使用pyopenclpycuda等)。 对于GPGPU,子阵列必须不超过GPU内存和 子数组形状应该是工作组的倍数OpenCL) 或线程块CUDA)大小。
文件I/O
一个大(密集)数组被划分成更小的子数组,这些子数组可以是 写入单个文件 (例如,作为 HDF5 Virtual Dataset)。 单个文件通常不超过指定的数目 (千兆)字节,对于HDF5,它是可取的 使单个文件子数组形状为 这个chunk shape。 同样地,out of core 大型密集阵列的算法通常需要将整个数据集处理为 核心子数组中的一系列。同样,对于单独的子阵列形状也是可取的 成为 chunk shape.

array_split包提供 表示使用以下任一条件对数组(或数组形状)进行分区:

    < L> >每个轴索引,指示^ {EM1}$CuxeEEM >位置。

    每个子阵列的轴数。

    >P>子数组的总数(具有可选的每轴^ {EM1} $数量的章节约束)。

  • 特定子阵列形状。

  • 子数组的haloghost)元素的规范。

  • 要分区的形状的任意start index

  • >p>具有约束的子数组的最大字节数:

    • sub-arrays are an even multiple of a specified sub-tile shape
    • upper limit on the per-axis sub-array shape

快速入门示例

>>> from array_split import array_split, shape_split
>>> import numpy as np
>>>
>>> ary = np.arange(0, 4*9)
>>>
>>> array_split(ary, 4) # 1D split into 4 sections (like numpy.array_split)
[array([0, 1, 2, 3, 4, 5, 6, 7, 8]),
 array([ 9, 10, 11, 12, 13, 14, 15, 16, 17]),
 array([18, 19, 20, 21, 22, 23, 24, 25, 26]),
 array([27, 28, 29, 30, 31, 32, 33, 34, 35])]
>>>
>>> shape_split(ary.shape, 4) # 1D split into 4 parts, returns slice objects
array([(slice(0, 9, None),), (slice(9, 18, None),), (slice(18, 27, None),), (slice(27, 36, None),)],
      dtype=[('0', 'O')])
>>>
>>> ary = ary.reshape(4, 9) # Make ary 2D
>>> split = shape_split(ary.shape, axis=(2, 3)) # 2D split into 2*3=6 sections
>>> split.shape
(2, 3)
>>> split
array([[(slice(0, 2, None), slice(0, 3, None)),
        (slice(0, 2, None), slice(3, 6, None)),
        (slice(0, 2, None), slice(6, 9, None))],
       [(slice(2, 4, None), slice(0, 3, None)),
        (slice(2, 4, None), slice(3, 6, None)),
        (slice(2, 4, None), slice(6, 9, None))]],
      dtype=[('0', 'O'), ('1', 'O')])
>>> sub_arys = [ary[tup] for tup in split.flatten()] # Create sub-array views from slice tuples.
>>> sub_arys
[array([[ 0,  1,  2], [ 9, 10, 11]]),
 array([[ 3,  4,  5], [12, 13, 14]]),
 array([[ 6,  7,  8], [15, 16, 17]]),
 array([[18, 19, 20], [27, 28, 29]]),
 array([[21, 22, 23], [30, 31, 32]]),
 array([[24, 25, 26], [33, 34, 35]])]

最新sphinx文档(包括更多示例) 在http://array-split.readthedocs.io/en/latest/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在IntelliJ社区版中为maven项目创建war文件?   架构在java编程中创建模型数据的最佳方式   java代码可以打印当前数字右边的最大数字,最后一个数字应该打印1   java上一个和下一个按钮,用于在WebView中从数组中加载字符串   java与直接DB调用/RESTful服务调用相比,测试Hazelcast数据检索速度的最佳方法是什么?   资源/类链接上的Java404   java如何安装play2War插件(Play Framework 2.1.1.)   多线程守护进程线程行为java   java如何从RepainManager生成异常   java Hibernate集合映射问题。无法删除或更新父行:外键约束失败   java LibGDX TextureRegion NullPointerException   java无法在JUnit套件中添加测试类   java通配符捕获/泛型   awt如何在Java中获取当前的鼠标指针类型?   java将probuf转换为POJO   java bouncycastle是否支持RSA PKCS1OAEP填充?   SQLiteDatabase的java问题。SQLITE数据库时的查询()。rawQuery()工作正常   java Android。如何正确存储数据库的数据?   java如何访问与GAE默认服务帐户关联的电子邮件地址?