Python numpy.zeros_like()中subok选项的用途和效用是什么?

Python numpy.zeros_like()中subok选项的用途和效用是什么?,python,class,numpy,subclass,Python,Class,Numpy,Subclass,使用numpy和相关函数,有一个选项 subok:bool,可选 numpy.zero_like(a,dtype=None,order='K',subok=True) 如果为True,则新创建的数组将使用子类类型“a”,否则它将是基类数组。默认为True 我假设所有的numpy数组都属于类ndarray,我从来没有必要详细查看数组的子类。在什么情况下我可能不想使用相同的子类,指定基类的使用 什么是目的和效用 目的: 调用签名有助于通过已处理的实例类型,如下所示: >>> np.

使用numpy和相关函数,有一个选项

subok:bool,可选

numpy.zero_like(a,dtype=None,order='K',subok=True)

如果为True,则新创建的数组将使用子类类型“a”,否则它将是基类数组。默认为True

我假设所有的numpy数组都属于类
ndarray
,我从来没有必要详细查看数组的子类。在什么情况下我可能不想使用相同的子类,指定基类的使用

什么是目的效用

目的: 调用签名有助于
通过已处理的实例类型,如下所示:

>>> np.array( np.mat( '1 2; 3 4' ),    # array-to-"process"
              subok = True             # FLAG True to ["pass-through"] the type
              )
matrix([[1, 2],
        [3, 4]])                       # RESULT is indeed the instance of matrix
相反,如果不愿意“重新处理”这两个
.shape
并使用
subok=False
实例化同一个类,则生成的
*\u like()
将不会得到相同的类,因为“示例”给出的过程是使
*\u like()
生成的输出:

type(                np.mat( '1 2;3 4' ) )   # <class 'numpy.matrixlib.defmatrix.matrix'>
type( np.array(      np.mat( '1 2;3 4' ) ) ) # <type 'numpy.ndarray'>
type( np.zeros_like( np.mat( '1 2;3 4' ) ) ) # <class 'numpy.matrixlib.defmatrix.matrix'>

>>> np.zeros_like(   np.mat( '1 2;3 4' ), subok = True  )
matrix([[0, 0],
        [0, 0]])
>>> np.zeros_like(   np.mat( '1 2;3 4' ), subok = False )
array([[0, 0],
       [0, 0]])
类型(np.mat('12;34'))#
类型(np.array(np.mat('12;34'))#
类型(np.zeros_like(np.mat('12;34'))#
>>>np.zero_like(np.mat('12;34'),subok=True)
矩阵([[0,0],
[0, 0]])
>>>np.zero_-like(np.mat('12;34'),subok=False)
数组([[0,0],
[0, 0]])

实用程序:
这些
subok
-标志在更多的
numpy
函数中很常见(不仅是
*\u like()
-s,在
np.array(…)
-s中也是如此),因为它对于智能类型修改代码设计非常有用,其中所需的产品类型为“生成”用户所知-因此,如果需要事后修改,则无需过度的类相关开销即可实现过程和结果。

`np.matrix`和
MaskedArray
ndarray
subclasses@hpaulj谢谢你,;这正是我想要听到的。我从来没有在我做的事情中使用过任何一个,所以我从来没有想到过;感谢您花时间详细解释!现在我要通读一遍,看看能学到什么。