从方法numpy.array()的参数意义来认识Python中常见的数据存储布局(Memory Layout)中参数KACF的意义

Posted 昊虹图像算法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从方法numpy.array()的参数意义来认识Python中常见的数据存储布局(Memory Layout)中参数KACF的意义相关的知识,希望对你有一定的参考价值。

参数K、A、C、F在Python中是比较常见的,它们用于表示数据的存储布局(Memory Layout)方式,所以有必要知道它们的意义。

比较好的认识这几个参数值意义的方法是从方法numpy.array()出发去认识。

函数array()有于生成Numpy的ndarray对象,其语法如下:

numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, like=None)

函数array()的官方文档链接:https://numpy.org/doc/stable/reference/generated/numpy.array.html?highlight=array#numpy.array

参数意义如下:
object—数组型对象,要求对象的方法__array__能返回一个数组或任何序列(可嵌套)。如果object是个标量,那么object是0维的。这个参数最常见的对象是列表对象。列表对象中就有方法__array__。
dtype—数据类型,可选参数。如果这个值没有指定,那么函数array()会选用能满足存储要求而占用空间最小的数据类型。

接下来的两个参数是理解标题中所述问题的关键:
copy—是否复制object内存布局(Memory Layout)的标志,也是可选参数。这个参数用于配合参数order来控制矩阵数据的内存布局。
order—指定矩阵数据的内存布局,默认值为K。该参数和参数copy配合使用来控制矩阵数据的内存布局,详情见下表:

orderno copycopy=True
‘K’unchangedF & C order preserved, otherwise most similar order
‘A’unchangedF order if input is F and not C, otherwise C order
‘C’C orderC order
‘F’F orderF order

表中的C order代表C语言的数据存储结构,F代表Fortrany语言的数据存储结构。
copy的默认值为True,order的默认值为K,从上表来看,这样的默认组合意味着F和C的数据存储被保留,而对于别的存储数据也会尽量保持相似。
那么C语言的数据存储结构是怎么样的呢?Fortrany语言的数据存储结构又是怎么样的呢?
是这样的:
C order,行序优先。
F order,列序列先。
至此,本文标题要回答的问题就说清楚了,后面两个参数subok和ndmin的意义大家不用看。

subok—如果为True,则返回的子类对象矩阵会被存储,否则返回的矩阵将被强制为基类矩阵对象(默认)。
ndmin—矩阵的最小维度,一般这个值都不填,而是自己填写数据格式控制维度。

以上是关于从方法numpy.array()的参数意义来认识Python中常见的数据存储布局(Memory Layout)中参数KACF的意义的主要内容,如果未能解决你的问题,请参考以下文章

numpy.array 从 d 维数组中选择所有偶数元素

如何从Numpy Array中删除/删除异常值

如何从 NumPy 数组中删除所有零元素?

NumPy来自现有数据的数组

shell脚本中的$# $0 $@ $* $$ $! $?的意义

如何从 boost::python 返回 numpy.array?