本文共 2229 字,大约阅读时间需要 7 分钟。
调用方式:
numpy.common_type(*arrays)
各个参数的意义:
*arrays
:表示输入的参数可以为多个数组,但是一定要为ndarray才能够被这个函数识别,其他的类型如int
,float
,complex
都无法被识别从而报错。 有返回值,会得到一个能够包含所有输入的所有数组类型的类型。 这个numpy
中的函数有什么作用呢?通常它会被用在一个函数中来获取传递进入函数的数组参数的类型,之后就可以使用这个结果来创建和输入数组同样类型的其他数组。代码如下:
import numpy as npclass Debug: def mainProgram(self, x1): dtype_x1 = np.common_type(x1) print(dtype_x1) #x2 = np.ones([2, 2], dtype=dtype_x1) print(x2.dtype) # float32 x3 = np.ones([2, 2], dtype=x1.dtype) print(x3.dtype) # float32 if __name__ == "__main__": main = Debug() x1 = np.array([1, 2], dtype=np.float32) print(x1.dtype) # float32 main.mainProgram(x1)
我们可以看到我们在外部创建了一个全局数组变量x1
,它的类型我们使用x1.dtype
打印得到为float32
。然后我们将它传递进入mainProgram()
中,之后我们使用np.common_type()
获取它的类型为<class 'numpy.float32'>
,然后我们创建了一个新的数组x2
并将我们刚刚获取的类型结果通过dtype
参量传递对下x2
数组进行初始化,接着我们打印x2
的类型发现和x1
的类型一致。至此,我们实现了使用np.common_type()
获取给定数组类型并创建相同类型新数组的过程。然后我们又创建了一个新的数组x3
,这次我们直接将x1.dtype
得到的x1
数组类型通过dtype
参数传递对x3
数组进行初始化,结果我们也获取到了与x1
数组类型一致的新数组。由此我们可以说,这两种方式是可以等价的。 然而如果我们需要创建很多个与x1数组类型一致的数组,采用后一种x1.dtype
获取类型并传递的方法就会导致程序的可读性很差,这也是np.common_type()
函数应运而生的原因。
然而如果仅仅是这样,这个函数功能就显得有些重复了,其实np.common_type()
的主要用法并非如此,而是经常被用在以下的情况,代码如下:
import numpy as npclass Debug: def mainProgram(self): x1 = np.array([1, 2], dtype=np.int32) x2 = np.array([1, 2], dtype=np.float32) type_12 = np.common_type(x1, x2) print(type_12) #if __name__ == "__main__": main = Debug() main.mainProgram()
我们创建一个int
类型的数组和一个float
类型的数组,从输出结果不难发现,它们的共同类型就是<class 'numpy.float64'>
,也就是说np.common_type()
可以找出数组们共同所属的类型集合。这里找出的是两个数组的共同所属类型集合,那么多个可不可以呢?答案是可以的。代码如下:
import numpy as npclass Debug: def mainProgram(self): x1 = np.array([1, 2], dtype=np.int32) x2 = np.array([1, 2], dtype=np.float32) x3 = np.array([1, 2], dtype=np.complex64) type_123 = np.common_type(x1, x2, x3) print(type_123) #if __name__ == "__main__": main = Debug() main.mainProgram()
如上述代码输出结果所示,共同类型type_123
为<class 'numpy.complex128'>
。
如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~
转载地址:http://rtuh.baihongyu.com/