【发布时间】:2015-01-31 16:45:32
【问题描述】:
numpy.array()中的order参数有什么作用?
它在我链接到的文档中说它将指定数组的连续顺序,但我不知道这应该是什么意思。那么什么是连续顺序呢?
订单参数文档副本:
顺序:{‘C’、‘F’、‘A’},可选 指定数组的顺序。如果 order 为“C”(默认),则数组将按 C 连续顺序排列(last-index 变化最快)。如果 order 为“F”,则返回的数组将采用 Fortran 连续顺序(第一个索引变化最快)。如果 order 为“A”,则返回的数组可以是任何顺序(C-、Fortran-连续,甚至不连续)。
【问题讨论】:
-
我认为它与数组在内存中的表示方式有关。默认情况下,它将是内存中连续的字节序列。
-
主要的好处是复制这样的数组会非常非常快。您只需将一个内存区域作为一个整体复制到另一个区域,而不是逐个元素地复制。这可以在 C/C++ 中使用 memcpy 来完成。
-
C 和 F 之间的区别只是数组是行主要还是列主要(即行或列条目存储在相邻的内存地址中)。 C 顺序意味着在阵列上操作 row-rise 会稍微快一些。 F 顺序意味着按列操作会更快。指定
A意味着创建的数组不需要有任何顺序 - 它允许在内存中不连续(例如,如果数组a不连续,那么a.copy('A')也可能是不连续的)。