首页 > 解决方案 > 获取支持fortran有序numpy数组的数据数组

问题描述

所以我理解 numpy 数组的“fortran 排序”意味着它是存储的主要列,但实际上并不影响数据所代表的内容。我正在寻找的是一种获取列主要 numpy 数组的方法,并返回一个一维数组,该数组以与 numpy 的内部列主要表示相同的顺序存储。

例如,假设我有一个这样的数组,但它以列主要格式存储。

array([[1, 2, 3],
       [4, 5, 6]])

由于它是主要的专栏,因此大步是(8, 16)

我想要一种方法来获得扁平的列主要表示,即:

array([1, 4, 2, 5, 3, 6])

标签: pythonarraysnumpy

解决方案


.flatten与参数一起使用F

a = np.array([[1, 2, 3],
              [4, 5, 6]])

a.flatten('C') #row major
>>> [1, 2, 3, 4, 5, 6]

a.flatten('F') #column major
>>> [1, 4, 2, 5, 3, 6]

转置它然后使其变平也是另一种 hacky 方式。

a.T.reshape(-1)
>>> [1, 4, 2, 5, 3, 6]

推荐阅读