Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy.array()中的order参数的作用是什么?_Python_C_Arrays_Numpy - Fatal编程技术网

Python numpy.array()中的order参数的作用是什么?

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代表的东西解包。我指的是《实施细则》一

中的order参数的作用是什么

它在我链接到的文档中说它将指定数组的连续顺序,但我不知道这意味着什么。那么什么是连续顺序呢

订单参数文档的副本:

顺序:{C',F',A'},可选 指定数组的顺序。如果顺序为“C”(默认),则数组将以C-连续顺序排列(最后一个索引变化最快)。如果顺序为“F”,则返回的数组将采用Fortran连续顺序(第一个索引变化最快)。如果顺序为“A”,则返回的数组可以是任意顺序(C-、Fortran连续或甚至不连续)


让我们先把
K
A
C
F
代表的东西解包。我指的是《实施细则》一节

  • C
    是连续布局。从数学上讲,罗少校
  • F
    是Fortran连续布局。从数学上讲,是主修专栏
  • A
    是任意顺序。一般不要用这个
  • K
    是为了维持秩序。一般不要用这个
从这里,我可以让您参考解决以下两个问题的其他答案:数据连续性和行与列的主要顺序。行与列的主要顺序最好用它来描述。现在我们来谈谈数据连续性。在python中,这通常不太重要,所以我将在这里跳到C

在C语言中,有两个用于存储2D数组的选项

  • 在第一个示例中,我们存储在数组中的数据类型是另一个数组。就指针而言,我们有一个内存块,其中的每个值都是指向另一个内存块的指针。为了在任何一点上找到一个值,我们必须先去引用外部数组,然后再去引用内部数组

    在第二个示例中,我们有一个大小为
    行*列的内存块。我们可以取消引用任何索引以获取其值。但指数是一维的。可以使用
    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-连续。)