numpy插入轴使数据不连续

2024-09-26 18:03:09 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么插入新的轴会使数据不连续?在

>>> a = np.arange(12).reshape(3,4,order='F')
>>> a
array([[ 0,  3,  6,  9],
       [ 1,  4,  7, 10],
       [ 2,  5,  8, 11]])
>>> a.reshape((3,1,4)).flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False
>>> a[np.newaxis,...].flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False
>>> a.flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : True
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False

请注意,如果我使用C排序,则在我重塑形状时,它确实会维护连续的数据,但在添加新轴时则不会:

^{pr2}$

更新对于那些可能在搜索中找到它的人来说,为了保持当前数组的顺序重塑,a.reshape(3,1,4,order='A')工作并保持一个连续的数组连续。在


对于那些问“你为什么在乎?”,这是一个脚本的一部分,该脚本以fortran顺序将数组传递给通过f2py编译的一些fortran子例程。fortran例程需要三维数据,所以我用新的维度填充数组,使它们达到所需的维数。我希望保持连续的数据,以避免copy-in/copy-out行为。在


Tags: 数据falsetruenporder数组flagsfortran

热门问题