numpy强制类型转换怎样做,会出现哪些问题
Admin 2022-08-23 群英技术资讯 617 次浏览
今天用numpy遇到一个关于类型转换的问题,
import numpy as np A = np.array([1,2,3,4,5,6,7,8,9]) A[0]=3.2 print(A) # [3 2 3 4 5 6 7 8 9]
可以发现A[0]=3.2,被强制转换成整型3了。发生的原因是A的类型是np.int,赋值浮点数,会自动转为整型。
这样的问题一旦出现很难发现,在写成程序时要提前想好要用的np类型。
补充,两个整型np.array做运算时,会根据运算自动转换类型。
A = np.array([1,2,3,4,5,6,7,8,9]) B = np.array([2,3,4,5,6,7,8,9,10]) print(A/B) # [0.5 0.66666667 0.75 0.8 0.83333333 0.85714286 0.875 0.88888889 0.9 ]
有时候我们从文件读取的numpy类型就不是我们想要的,需要强制转换
A = np.array([1,2,3,4,5,6,7,8,9]) A.dtype = 'float' # 不能为dtype赋予类型,数据会出错 A.astype('float') # 正确做法
In [11]: arr = np.array([1,2,3,4,5]) In [12]: arr Out[12]: array([1, 2, 3, 4, 5]) // 该命令查看数据类型 In [13]: arr.dtype Out[13]: dtype('int64') In [14]: float_arr = arr.astype(np.float64) // 该命令查看数据类型 In [15]: float_arr.dtype Out[15]: dtype('float64')
// 如果将浮点数转换为整数,则小数部分会被截断 In [7]: arr2 = np.array([1.1, 2.2, 3.3, 4.4, 5.3221]) In [8]: arr2 Out[8]: array([ 1.1 , 2.2 , 3.3 , 4.4 , 5.3221]) // 查看当前数据类型 In [9]: arr2.dtype Out[9]: dtype('float64') // 转换数据类型 float -> int In [10]: arr2.astype(np.int32) Out[10]: array([1, 2, 3, 4, 5], dtype=int32)
In [4]: numeric_strings = np.array(['1.2','2.3','3.2141'], dtype=np.string_) In [5]: numeric_strings Out[5]: array(['1.2', '2.3', '3.2141'], dtype='|S6') // 此处写的是float 而不是np.float64, Numpy很聪明,会将python类型映射到等价的dtype上 In [6]: numeric_strings.astype(float) Out[6]: array([ 1.2, 2.3, 3.2141])
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
sequence 序列sequence(序列)是一组有顺序的元素的集合(严格的说,是对象的集合,但鉴于我们还没有引入“对象”概念,暂时说元素)序列可以
前言在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、python type()(数据类型)和valu
Python内置函数- delattr()函数。delattr 函数用于删除对象属性。
这篇文章主要为大家详细介绍了Python实现FIFO(先进先出)缓存置换算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在上一章的学习中,我们主要学习了怎么去衡量一个算法的好坏,比较常见的方式是使用大O记法,就是所谓的时间复杂度,这一章节我来学习基本的数据结构,如栈、队列和双端队列等等。感兴趣的小伙伴可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008