我正在观察一些奇怪的行为。以下是代码片段:
>>> 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]])
有人可以解释发生了什么吗?
答案 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
的(已排序)副本。