我試圖運行一些代碼并對陣列進行排序,下面是代碼。網上說可以使用這種方式對陣列進行排序,但是當我運行此代碼時,輸??出是 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)
此外,我發現這有效 - 但我仍然不知道為什么。
print(np.sort(arr))
ab = np.sort(arr)
print(ab)

uj5u.com熱心網友回復:
原因是當您呼叫sort()陣列本身時,它會就地對陣列進行排序并回傳None,因此在代碼的第一部分arr_sorted也是None如此。最好以這種方式呼叫方法:
arr.sort()
的情況也是如此np.ndarray.sort(arr),所以arr_sorted2也是None。
但是,呼叫np.sort(arr)將排序后的陣列作為另一個物件回傳,應該以這種方式呼叫:
arr = np.sort(arr)
Jupyter 的行為是相同的,您可能需要重新啟動筆記本并再次嘗試從代碼中獲取有效輸出,因為筆記本可能保存了變數的最后狀態。
uj5u.com熱心網友回復:
如果你把'sort'作為ndarray類的方法,它對陣列進行原地排序并回傳None,但是如果你像numpy的函式一樣通過呼叫'np.sort'來使用'sort',那么在這種情況下它回傳一個陣列的排序副本,和原來的一樣。所以這不是pycharm中numpy的故障
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/359765.html
上一篇:如何處理兩個十億記錄進行檔案比較
