博客
关于我
numpyp.common_type()函数
阅读量:323 次
发布时间:2019-03-04

本文共 2229 字,大约阅读时间需要 7 分钟。

调用方式:

numpy.common_type(*arrays)

各个参数的意义:

*arrays:表示输入的参数可以为多个数组,但是一定要为ndarray才能够被这个函数识别,其他的类型如intfloatcomplex都无法被识别从而报错。
有返回值,会得到一个能够包含所有输入的所有数组类型的类型。

这个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/

你可能感兴趣的文章
【单片机开发】智能小车工程(经验总结)
查看>>
【单片机开发】基于stm32的掌上游戏机设计 (项目规划)
查看>>
KeepAlived介绍、配置示例、KeepAlived配置IPVS、调用脚本进行监控
查看>>
Scala集合-数组、元组
查看>>
04 程序流程控制
查看>>
java并发编程(1)
查看>>
C++&&STL
查看>>
子集(LeetCode 78)
查看>>
1093 Count PAT‘s (25分) 含DP做法
查看>>
一篇解决JMM与volatile详解(二)
查看>>
数据结构之数组与经典面试题(二)
查看>>
无锁并发框架-Disruptor的使用(二)
查看>>
Android wm命令
查看>>
boot.img 解包与打包
查看>>
Android4.4 平板背光设置
查看>>
spring boot@Value和bean执行顺序问题
查看>>
codeforces The Eternal Immortality 题解
查看>>
蓝桥杯 历届试题 幸运数 (堆+DFS)
查看>>
微信js-sdk使用简述(分享,扫码功能等)
查看>>
selenium 的介绍和爬取 jd数据
查看>>