奇怪的Python numpy数组索引行为

奇怪的Python numpy数组索引行为,python,arrays,numpy,Python,Arrays,Numpy,我有以下数组 [0. 100. 200. 300. 400. -500. -400. -300. -200. -100.] 我正试着把它从最小的排列到最大的 我找到了从pos到neg的转折点,它存储在j中 如果我打印以下内容,我会得到 >>print(frequencies[4]) 400.0 但是 为什么不一直到400?似乎是一种奇怪的语法约定选择。几乎所有Python的行为都是[,这意味着左参数或开始参数是包含的,右参数或结束参数是独占的。无论是列表切片、字符串切片还是范围函

我有以下数组

[0. 100. 200. 300. 400. -500. -400. -300. -200. -100.]
我正试着把它从最小的排列到最大的

我找到了从pos到neg的转折点,它存储在j中

如果我打印以下内容,我会得到

>>print(frequencies[4])
400.0
但是


为什么不一直到400?似乎是一种奇怪的语法约定选择。

几乎所有Python的行为都是[,这意味着左参数或开始参数是包含的,右参数或结束参数是独占的。无论是列表切片、字符串切片还是范围函数, 等等


只有numpy遵循这个约定才有意义。

如果您不喜欢Python约定,我建议您根据自己的喜好构建自己的语言……如何在代码中获得j?它有什么价值?我认为这是一个不错的选择。如果您有a=[9,8,7,6],那么a[0:2]+a[2:4]将为您提供[9,8,7,6]再说一遍。对于2,第一部分的结尾和第二部分的开头都有相同的值。朱利安,我想我可能也有。请看Guido Van Rossum的回答:有趣的是,在中。这一直困扰着我,我不确定他们为什么决定打破这里的惯例。@James随机模块似乎甚至没有遵循它自己的惯例或任何惯例,参见比较random.random到random.randint behaviorHuh。所以我猜它只是randint。奇怪。
>>print(frequencies[0:4-1])
[0. 100. 200. 300.]