我试图运行一些代码并对数组进行排序,下面是代码。网上说可以使用这种方式对数组进行排序,但是当我运行此代码时,输出是 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)
原因是当您调用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 的行为是相同的,您可能需要重新启动笔记本并再次尝试从代码中获取有效输出,因为笔记本可能保存变量的最后状态。
归档时间: |
|
查看次数: |
1462 次 |
最近记录: |