Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从非连续二维切片集创建三维numpy阵列_C++_Python_Numpy_Python C Api - Fatal编程技术网

C++ 从非连续二维切片集创建三维numpy阵列

C++ 从非连续二维切片集创建三维numpy阵列,c++,python,numpy,python-c-api,C++,Python,Numpy,Python C Api,是否可以使用PyArray\u NewFromDescr从一组连续的2d数组创建numpy数组对象,而不复制数据?您的帖子中有一点不一致;我假设你的标题描述了你想要的。看看pythonapi文档,只接受一个指向预分配内存的指针,因此答案几乎肯定是否定的。似乎您可以以一种巧妙的方式使用strips参数来实现这一点;但即使如此,非连续内存也必须以常规方式进行布局 此外,这显然不是numpy希望您做的事情,从中可以看出,它似乎假设一个连续内存块 简短的回答是否定的 Numpy希望所有的数据都以一种简单

是否可以使用PyArray\u NewFromDescr从一组连续的2d数组创建numpy数组对象,而不复制数据?

您的帖子中有一点不一致;我假设你的标题描述了你想要的。看看pythonapi文档,只接受一个指向预分配内存的指针,因此答案几乎肯定是否定的。似乎您可以以一种巧妙的方式使用
strips
参数来实现这一点;但即使如此,非连续内存也必须以常规方式进行布局

此外,这显然不是numpy希望您做的事情,从中可以看出,它似乎假设一个连续内存块

简短的回答是否定的

Numpy希望所有的数据都以一种简单、跨越式的方式进行处理。当在数组上迭代时,为了在维度上前进,它会向内存中的位置添加一个常量,即该维度的步幅大小。因此,除非您的二维切片是定期布置的(例如,更大的三维阵列中每隔一行),否则numpy将需要复制数据

如果你有那个命令,你可以做你想做的事。您需要创建一个PyArray结构,其中数据指向第一项,跨步对于布局是正确的,描述也是正确的。最重要的是,您需要将基本成员设置为另一个python对象,以便在该视图存在时保持大块内存的活动状态