Hor*_*ith 6 c python arrays numpy
numpy.array()中的order参数有什么作用?
它在文档中说我链接到它将指定数组的连续顺序,但我不知道这是什么意思.那么连续的顺序是什么?
订单参数文档的副本:
order:{'C','F','A'},可选指定数组的顺序.如果order是'C'(默认值),则数组将以C连续顺序排列(last-index变化最快).如果order为'F',则返回的数组将采用Fortran连续顺序(first-index变化最快).如果order是'A',则返回的数组可以是任何顺序(C-,Fortran-连续,甚至是不连续的).
小智 7
让我们先拆开包装K A C并F首先代表什么。我指的是实施细节部分本。
C是连续布局。从数学上讲,行专业。F是 Fortran 连续布局。从数学上讲,专栏专业。A是什么顺序。一般不要用这个。K是保持秩序。一般不要用这个。从这里我可以向您推荐解决以下两个问题的其他答案:数据连续性和行与列主要排序。行与列主要排序在其Wikipedia 文章中得到了最好的描述。所以现在让我们谈谈数据连续性。在 python 中,这通常不是那么重要,所以我将在这里暂时跳到 C。
在 C 中有两种用于存储二维数组的选项。
在第一个示例中,我们存储在数组中的数据类型是另一个数组。就指针而言,我们有一块内存,其中的每个值都是指向另一个内存块的指针。为了在任何点找到一个值,我们必须先取消引用外部数组,然后再引用内部数组。
在第二个示例中,我们有一个大小为 的内存块rows * columns。我们可以取消引用任何索引以获取其值。但是索引是一维的。可以使用 转换 2D 索引y + x * width。
在进行数值计算时,我们努力使用连续数组。这是因为numpy依赖的缓存加速。如果我想将值添加a到 2D 数组中的每个值,如果合适,我可以将整个展平的数组移动到缓存中。但是,您只能将单个列(或行)移动到数组数组的缓存中。如果你想了解更多,请查看SIMD [相同指令多数据]。