2016-08-03 34 views
-3

我有以下陣列奇怪的Python的numpy的數組索引行爲

[0. 100. 200. 300. 400. -500. -400. -300. -200. -100.] 

這我試圖重新安排從最小到是最大的。

我發現存儲在j中的從pos到neg的轉折點。

如果我打印以下我得到

>>print(frequencies[4]) 
400.0 

>>print(frequencies[0:4-1]) 
[0. 100. 200. 300.] 

爲什麼它不上升到400所有的方式?看起來像是一種奇怪的語法慣例選擇。

+0

如果您不喜歡Python約定,我建議您根據自己的口味構建自己的語言...... – Julien

+0

如何在代碼中獲得j?它有什麼價值 – Glostas

+0

我認爲這是一個不錯的選擇。如果你有'a = [9,8,7,6]',那麼'a [0:2] + a [2:4]'會再次給你'[9,8,7,6]'。對於第二部分的結尾和第二部分的開始,用'2'表示相同的值。 – Matthias

回答

4

幾乎在任何地方通過Python的行爲是[),這意味着左(或開始)參數是包容性的,右(或結束)參數是排他性的。無論是列表切片,字符串切片,range功能, 等

它只適用於numpy遵循此約定。

+0

有趣的是,在[random module](https://docs.python.org/2/library/random.html#random.randint)中。它總是困擾着我,我不確定他們爲什麼決定在那裏突破常規。 – James

+0

@James隨機模塊似乎沒有遵循甚至自己的約定(或關於此事的任何約定),請參閱https://docs.python.org/2/library/random.html#random.random(比較'random .random'到'random.randint'行爲) – DeepSpace

+0

呵呵。所以我想這只是'randint'。奇怪的。 – James