Python 如何根据np数组元素的最后一个元素访问它

Python 如何根据np数组元素的最后一个元素访问它,python,arrays,numpy,Python,Arrays,Numpy,实际上,我正在做一个关于numpy数组的序列操作,因此,我想知道如何快速访问a[I] (因为我在最后一个循环中访问a[I-1],因此,在c++中,我们可以通过在a[I-1]的地址中添加1来访问a[I],但我不知道在numpy中是否可能。谢谢。我认为这是不可能的。a[I]是最快的方法 Python是一种比c++更容易学习(和使用)的编程语言,这当然是有代价的,其中一个代价就是速度较慢 您正在谈论的引用可能是“危险的”,因此python使人们无法(轻松地)使用它们,以保护他们不受不理解的内容的影响

实际上,我正在做一个关于
numpy数组的序列操作,因此,我想知道如何快速访问
a[I]


(因为我在最后一个循环中访问
a[I-1]
,因此,在
c++
中,我们可以通过在
a[I-1]
的地址中添加1来访问
a[I]
,但我不知道在numpy中是否可能。谢谢。

我认为这是不可能的。
a[I]
是最快的方法

Python是一种比
c++
更容易学习(和使用)的编程语言,这当然是有代价的,其中一个代价就是速度较慢

您正在谈论的引用可能是“危险的”,因此python使人们无法(轻松地)使用它们,以保护他们不受不理解的内容的影响


当引用速度更快时,在Python中不能使用它们(因为它是比较慢的,使用引用的差异或不重要)。

< P>最好不要把Python看作C++数组。它们有很大的不同。Python也提供它自己的本地对象,并在标准库中包含一个模块。 Python列表的行为基本上类似于一个通用数组(在许多编程语言中都可以找到)。它是一个有序的序列;元素可以通过整数索引从0到(但不包括)列表的长度(len(mylist))进行访问;元素的范围可以使用“slice”表示法进行访问(mylist[start\u offset:end\u offset])返回另一个列表对象;负索引被视为从列表末尾的偏移量(mylist[-1]是列表的最后一项),依此类推

此外,它们还支持许多方法,如.count()、.find()和.replace()

与大多数编程语言中的数组不同,Python列表是异构的。元素可以是Python中任何对象类型的任意组合,包括对嵌套列表、字典、代码、类、生成器对象和其他可调用的第一类对象的引用,当然还有自定义对象的实例

Python数组模块允许实例化类似于列表的同质对象。也就是说,可以使用十几种基本数据类型(字符或Unicode、有符号或无符号短整数或长整数、浮点或双精度浮点)中的任意一种来实例化它们。索引和切片与Python本机列表相同

Python数组的主要优点实例是,它们可以存储大量元素,比更一般化的列表对象更紧凑。这些数组上的各种操作可能比通过迭代或以其他方式引用本机Python列表中的元素执行的类似操作要快一些,因为引用的局部性更大在更紧凑的数组布局中(内存中),并且由于类型约束消除了处理通用对象时产生的一些调度开销

另一方面,它远比Python数组模块复杂

首先,ndarray可以是多维的,并且可以动态地重塑。通常从线性ndarray开始,将其重塑为矩阵或其他更高维的结构。此外,ndarray支持比Python数组模块更丰富的数据类型集。NumPy还实现了一些相当高级的功能

但是NumPy真正的性能优势在于它如何“矢量化”大多数操作,在数据结构中广播它们(在此过程中,可能会使用CPU甚至GPU支持的任何功能。在列表中,许多常见的矩阵操作,在正确地使用Python for NumPy编写时,都是以本机机器代码速度执行的。这种性能优势远远超出了引用的局部性和消除我们获得的调度表的次要影响对简单阵列模块进行初始化