gpt4 book ai didi

python - numpy.array() 中的顺序参数有什么作用,也就是什么是连续顺序?

转载 作者:太空狗 更新时间:2023-10-30 00:17:17 26 4
gpt4 key购买 nike

numpy.array()中的order参数是什么意思做什么?

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

订单参数文档副本:

order : {‘C’, ‘F’, ‘A’}, optional Specify the order of the array. If order is ‘C’ (default), then the array will be in C-contiguous order (last-index varies the fastest). If order is ‘F’, then the returned array will be in Fortran-contiguous order (first-index varies the fastest). If order is ‘A’, then the returned array may be in any order (either C-, Fortran-contiguous, or even discontiguous).

最佳答案

让我们首先解压缩K A CF 代表的第一个。我指的是 this 的实现细节部分.

  • C 是连续布局。从数学上讲,行专业。
  • F 是 Fortran 连续布局。从数学上讲,专栏专业。
  • A 是任意顺序。一般不要用这个。
  • K 是保持秩序。一般不要用这个。

从这里我可以向您推荐解决以下两个问题的其他答案:数据连续性和行与列主要排序。 Row vs Column Major Ordering 最好用它的 Wikipedia article 来描述。 .那么现在让我们谈谈数据连续性。在 python 中,这通常不是那么重要,所以我在这里暂时跳到 C。

在 C 中,有两种存储二维数组的选项。

  1. An array of arrays
  2. A flattened array

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

在第二个示例中,我们有一个大小为行 * 列 的内存块。我们可以取消引用任何索引以获取其值。但是索引是一维的。可以使用 y + x * width 转换二维索引。

在进行数值计算时,我们力求使用连续的数组。这样做的原因是 numpy 依赖的缓存加速。如果我想将值 a 添加到二维数组中的每个值,我可以将整个展平数组移动到缓存中(如果合适的话)。但是,您只能将单个列(或行)移动到数组数组的缓存中。想了解更多可以查SIMD [同指令多数据].

关于python - numpy.array() 中的顺序参数有什么作用,也就是什么是连续顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27266338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com