我无法理解如何numpy
存储其数据。考虑以下:
>>> import numpy as np
>>> a = np.ndarray(shape=(2,3), order='F')
>>> for i in xrange(6): a.itemset(i, i+1)
...
>>> a
array([[ 1., 2., 3.],
[ 4., 5., 6.]])
>>> a.flags
C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
这说的是a
是列主要(F_CONTIGUOUS
)因此,在内部,a
应如下所示:
[1, 4, 2, 5, 3, 6]
这就是本节中所说的glossary http://docs.scipy.org/doc/numpy/glossary.html#term-column-major。让我困惑的是,如果我尝试访问的数据a
相反,我以线性方式得到:
>>> for i in xrange(6): print a.item(i)
...
1.0
2.0
3.0
4.0
5.0
6.0
此时我不确定是什么F_CONTIGUOUS
flag 告诉我们,因为它不遵守顺序。显然,Python 中的所有内容都是行优先,当我们想要以线性方式迭代时,我们可以使用迭代器flat http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#flat-iterator-indexing.
问题如下:鉴于我们有一个数字列表,请说:1, 2, 3, 4, 5, 6
,我们怎样才能创建一个numpy
形状数组(2, 3)
按列主要顺序?这就是我怎样才能得到一个看起来像这样的矩阵
array([[ 1., 3., 5.],
[ 2., 4., 6.]])
我真的希望能够线性迭代列表并将它们放入新创建的列表中ndarray
。这样做的原因是因为我将读取按列主要顺序设置的多维数组的文件。