C++ 从非连续二维切片集创建三维numpy阵列
是否可以使用PyArray\u NewFromDescr从一组连续的2d数组创建numpy数组对象,而不复制数据?您的帖子中有一点不一致;我假设你的标题描述了你想要的。看看pythonapi文档,只接受一个指向预分配内存的指针,因此答案几乎肯定是否定的。似乎您可以以一种巧妙的方式使用C++ 从非连续二维切片集创建三维numpy阵列,c++,python,numpy,python-c-api,C++,Python,Numpy,Python C Api,是否可以使用PyArray\u NewFromDescr从一组连续的2d数组创建numpy数组对象,而不复制数据?您的帖子中有一点不一致;我假设你的标题描述了你想要的。看看pythonapi文档,只接受一个指向预分配内存的指针,因此答案几乎肯定是否定的。似乎您可以以一种巧妙的方式使用strips参数来实现这一点;但即使如此,非连续内存也必须以常规方式进行布局 此外,这显然不是numpy希望您做的事情,从中可以看出,它似乎假设一个连续内存块 简短的回答是否定的 Numpy希望所有的数据都以一种简单
strips
参数来实现这一点;但即使如此,非连续内存也必须以常规方式进行布局
此外,这显然不是numpy希望您做的事情,从中可以看出,它似乎假设一个连续内存块 简短的回答是否定的
Numpy希望所有的数据都以一种简单、跨越式的方式进行处理。当在数组上迭代时,为了在维度上前进,它会向内存中的位置添加一个常量,即该维度的步幅大小。因此,除非您的二维切片是定期布置的(例如,更大的三维阵列中每隔一行),否则numpy将需要复制数据
如果你有那个命令,你可以做你想做的事。您需要创建一个PyArray结构,其中数据指向第一项,跨步对于布局是正确的,描述也是正确的。最重要的是,您需要将基本成员设置为另一个python对象,以便在该视图存在时保持大块内存的活动状态