有没有指定比1D np.array命令Fortran?

时间:2017-02-14 09:43:05

标签: python numpy cython

阅读一些cython代码,我遇到了

cdef double[:] centers = np.zeros(n_samples, order='F')

其中n_samples是int,不是iterable。有没有理由使用order='F',因为数组是1D?

2 个答案:

答案 0 :(得分:2)

对1D NumPy数组的标志进行简短测试:

In [1]: import numpy as np

In [2]: np.zeros(10).flags
Out[2]: 
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False

In [3]: np.zeros(10, order='F').flags
Out[3]: 
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False

所以,不,它没有任何区别。

答案 1 :(得分:1)

不,这不应该有任何区别。 Fortan / C命令没有明确跟踪;治理属性是大步;如果strides是长度为1的序列,则Fortran和C顺序是相同的,所以区别是无效的。