使用就地排序列表初始化numpy数组

时间:2014-02-03 16:47:21

标签: python sorting numpy in-place

我正在观察一些奇怪的行为。以下是代码片段:

>>> import numpy as np
>>> a = [[1, .3], [0, .5], [2, .23]]
>>> b = np.array(a.sort())
>>> b
array(None, dtype=object)

预计会出现这种情况吗?如果我为就地排序添加一个中间步骤,它将按预期工作:

>>> a = [[1, .3], [0, .5], [2, .23]]
>>> a.sort()
>>> b = np.array(a)
>>> b
array([[ 0.  ,  0.5 ],
       [ 1.  ,  0.3 ],
       [ 2.  ,  0.23]])

有人可以解释发生了什么吗?

1 个答案:

答案 0 :(得分:3)

问题是a.sort()没有返回排序列表。它返回None

>>> a.sort() is None
True

您可以使用sorted(a)

>>> b = np.array(sorted(a))
>>> b
array([[ 0.  ,  0.5 ],
       [ 1.  ,  0.3 ],
       [ 2.  ,  0.23]])

但是,这会创建a的(已排序)副本。