PyCharm numpy - 对数组进行排序不起作用?

2 python arrays sorting numpy

我试图运行一些代码并对数组进行排序,下面是代码。网上说可以使用这种方式对数组进行排序,但是当我运行此代码时,输​​出是 None 而不是排序后的代码,有人可以解释为什么吗?在 Jupyter Notebook 中,我测试时效果很好。这两种方法都行不通——为什么呢?

import numpy as np
arr = np.array([3, 7, 6, 8, 9, 1, 2, 3])
arr_sorted = arr.sort()
print(arr_sorted)

# alternative way 
arr_sorted2 = np.ndarray.sort(arr)
    print(arr_sorted2)
Run Code Online (Sandbox Code Playgroud)

另外我发现这确实有效 - 但我仍然不知道为什么。

print(np.sort(arr))
ab = np.sort(arr)
print(ab)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

S0H*_*31L 6

原因是当您调用sort()数组本身时,它会就地对数组进行排序并返回None,代码的第一部分arr_sorted也是如此。None最好这样调用该方法:

arr.sort()
Run Code Online (Sandbox Code Playgroud)

此为也np.ndarray.sort(arr),故arr_sorted2为也None

但是,调用np.sort(arr)将排序后的数组作为另一个对象返回,并且应该以这种方式调用它:

arr = np.sort(arr)
Run Code Online (Sandbox Code Playgroud)

Jupyter 的行为是相同的,您可能需要重新启动笔记本并再次尝试从代码中获取有效输出,因为笔记本可能保存变量的最后状态。