2016-08-03 76 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