Skip to main content

基于 C++ 的 NumPy N 维补丁提取。

项目描述

npy-cpp-补丁

.npy从文件中读取 N 维补丁。该模块是使用C++并具有Python3绑定构建的。

数据规格

  • 数组必须以C-contiguous格式保存,即NOT Fortran-contiguous
  • 第一个维度以非连续方式使用索引。例如,这可用于提取自然图像中的特定通道。
  • 下一个维度由补丁形状C++向量或Python元组指定。要提取比数据低维的补丁,请将相应的维度设置为1

Python 用法

安装

pip install npy-patcher

用法

from npy_patcher import PatcherDouble, PatcherFloat, PatcherInt, PatcherLong

# In this example lets say our data has shape (10, 90, 90), and is therefore 3D.
data_fpath = '/my/numpy/file.npy'
patcher = PatcherFloat() # Use PatcherFloat for np.float32 datatype
nc_index = [0, 1, 3, 5, 7] # Non-contiguous index
patch_shape = (30, 30) # Contiguous patch shape.
patch_num = 2
# The patch number indexes the patches (starting from 0). So in our example the index 2 would be equivalent to data[nc_index, 0:30, 60:90]. The variable indexes the patches in C-contiguous manner, i.e. the last dimension has the smallest stride.

patch = patcher.get_patch(data_fpath, nc_index, patch_shape, patch_num)
patch = patch.reshape((5, 30, 30)) # PatcherFloat returns a list, therefore we need to reshape.

C++ 用法

下面是一个用 写的例子C++,相当于Python上面的用法。

// test.cpp
#include "src/patcher.hpp"
#include <vector>
#include <string>

int main() {
    std::string fpath = "data.npy";
    std::vector<size_t> nc_index {0, 1, 3, 5, 7};
    std::vector<size_t> patch_shape {30, 30};
    size_t patch_num = 2;

    Patcher<float> patcher;

    // Here the patch object is a contiguous 1D vector
    std::vector<float> patch = patcher.get_patch(fpath, nc_index, patch_shape, patch_num);

    return 0;
}

然后,您可以构建包,例如使用g++

$ cd npy-cpp-patches/
$ g++ -std=c++17 -I ./ -g test.cpp src/npy_header.cpp src/pyparse.cpp -o test

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

npy-patcher-1.0.8.tar.gz (11.3 kB 查看哈希

已上传 source

内置发行版

npy_patcher-1.0.8-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (100.7 kB 查看哈希

已上传 pp39

npy_patcher-1.0.8-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (100.7 kB 查看哈希

已上传 pp38

npy_patcher-1.0.8-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (100.8 kB 查看哈希

已上传 pp37

npy_patcher-1.0.8-cp310-cp310-musllinux_1_1_x86_64.whl (651.7 kB 查看哈希

已上传 cp310

npy_patcher-1.0.8-cp310-cp310-musllinux_1_1_i686.whl (711.8 kB 查看哈希

已上传 cp310

npy_patcher-1.0.8-cp310-cp310-macosx_10_9_x86_64.whl (103.8 kB 查看哈希

已上传 cp310

npy_patcher-1.0.8-cp39-cp39-musllinux_1_1_x86_64.whl (651.8 kB 查看哈希

已上传 cp39

npy_patcher-1.0.8-cp39-cp39-musllinux_1_1_i686.whl (712.3 kB 查看哈希

已上传 cp39

npy_patcher-1.0.8-cp39-cp39-macosx_10_9_x86_64.whl (104.1 kB 查看哈希

已上传 cp39

npy_patcher-1.0.8-cp38-cp38-musllinux_1_1_x86_64.whl (651.8 kB 查看哈希

已上传 cp38

npy_patcher-1.0.8-cp38-cp38-musllinux_1_1_i686.whl (712.1 kB 查看哈希

已上传 cp38

npy_patcher-1.0.8-cp38-cp38-macosx_10_9_x86_64.whl (103.9 kB 查看哈希

已上传 cp38

npy_patcher-1.0.8-cp37-cp37m-musllinux_1_1_x86_64.whl (653.6 kB 查看哈希

已上传 cp37

npy_patcher-1.0.8-cp37-cp37m-musllinux_1_1_i686.whl (714.4 kB 查看哈希

已上传 cp37

npy_patcher-1.0.8-cp37-cp37m-macosx_10_9_x86_64.whl (101.8 kB 查看哈希

已上传 cp37

npy_patcher-1.0.8-cp36-cp36m-musllinux_1_1_x86_64.whl (653.5 kB 查看哈希

已上传 cp36

npy_patcher-1.0.8-cp36-cp36m-musllinux_1_1_i686.whl (714.5 kB 查看哈希

已上传 cp36

npy_patcher-1.0.8-cp36-cp36m-macosx_10_9_x86_64.whl (101.8 kB 查看哈希

已上传 cp36