Python numpy.array()中的order参数的作用是什么?
中的order参数的作用是什么 它在我链接到的文档中说它将指定数组的连续顺序,但我不知道这意味着什么。那么什么是连续顺序呢 订单参数文档的副本: 顺序:{C',F',A'},可选 指定数组的顺序。如果顺序为“C”(默认),则数组将以C-连续顺序排列(最后一个索引变化最快)。如果顺序为“F”,则返回的数组将采用Fortran连续顺序(第一个索引变化最快)。如果顺序为“A”,则返回的数组可以是任意顺序(C-、Fortran连续或甚至不连续)Python numpy.array()中的order参数的作用是什么?,python,c,arrays,numpy,Python,C,Arrays,Numpy,中的order参数的作用是什么 它在我链接到的文档中说它将指定数组的连续顺序,但我不知道这意味着什么。那么什么是连续顺序呢 订单参数文档的副本: 顺序:{C',F',A'},可选 指定数组的顺序。如果顺序为“C”(默认),则数组将以C-连续顺序排列(最后一个索引变化最快)。如果顺序为“F”,则返回的数组将采用Fortran连续顺序(第一个索引变化最快)。如果顺序为“A”,则返回的数组可以是任意顺序(C-、Fortran连续或甚至不连续) 让我们先把KAC和F代表的东西解包。我指的是《实施细则》一
让我们先把
K
A
C
和F
代表的东西解包。我指的是《实施细则》一节
是连续布局。从数学上讲,罗少校C
是Fortran连续布局。从数学上讲,是主修专栏F
是任意顺序。一般不要用这个A
是为了维持秩序。一般不要用这个K
行*列的内存块。我们可以取消引用任何索引以获取其值。但指数是一维的。可以使用y+x*width
转换二维索引
在进行数学运算时,我们努力使用连续数组。原因是numpy所依赖的缓存加速。如果我想将值a
添加到二维数组中的每个值中,如果合适,我可以将整个展开数组移动到缓存中。但是,对于数组数组,只能将单个列(或行)移动到缓存中。如果您想了解更多信息,请查阅[同一指令多数据]。我认为这与数组在内存中的表示方式有关。默认情况下,它将是内存中连续的字节序列。主要的好处是复制这样的数组将非常非常快。您只需将内存的一个区域作为一个整体复制到另一个区域,而不是逐个元素。这可以在C/C++中完成。有几个问题可能会有帮助。C和F之间的区别在于数组是行主数组还是列主数组(即行或列条目存储在相邻的内存地址中)。C顺序意味着阵列上的操作行上升将稍微快一点。F顺序意味着按列操作将更快。指定A
意味着创建的数组不需要任何一个顺序-允许它在内存中不连续(例如,如果数组A
不连续,则A.copy('A')
也可能不连续)。可能重复您混淆了C数组的工作方式和Java数组的工作方式。您的“数组数组”图像来自Java课程。是的,它来自Java课程,但概念是相同的。您有一个由C数组组成的C数组,本质上是指向一个内存块的指针,其中包含指向其他内存块的多个指针。内存不是连续的。这不是C数组的工作方式。这就是一个C指针到一个C数组的工作原理。数组的C数组是连续的,其布局与C-连续NumPy多维数组相同。(这就是为什么它被称为C-连续。)