关于numpy强制类型转换的问题
目录
- numpy强制类型转换
- numpy类型强制转换api
- numpy数据类型转换astype,dtype
- 1.查看数据类型
- 2.转换数据类型
- 3.字符串数组转换为数值型
numpy强制类型转换 今天用numpy遇到一个关于类型转换的问题,
import numpy as npA = np.array([1,2,3,4,5,6,7,8,9])A[0]=3.2print(A)# [3 2 3 4 5 6 7 8 9]
可以发现A[0]=3.2,被强制转换成整型3了。发生的原因是A的类型是np.int,赋值浮点数,会自动转为整型。
这样的问题一旦出现很难发现,在写成程序时要提前想好要用的np类型。
【关于numpy强制类型转换的问题】补充,两个整型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.50.666666670.750.80.833333330.857142860.8750.888888890.9 ]
numpy类型强制转换api
有时候我们从文件读取的numpy类型就不是我们想要的,需要强制转换
A = np.array([1,2,3,4,5,6,7,8,9])A.dtype = 'float'# 不能为dtype赋予类型,数据会出错A.astype('float')# 正确做法
numpy数据类型转换astype,dtype
1.查看数据类型
In [11]: arr = np.array([1,2,3,4,5])In [12]: arrOut[12]: array([1, 2, 3, 4, 5])// 该命令查看数据类型In [13]: arr.dtypeOut[13]: dtype('int64')In [14]: float_arr = arr.astype(np.float64)// 该命令查看数据类型In [15]: float_arr.dtypeOut[15]: dtype('float64')
2.转换数据类型
// 如果将浮点数转换为整数,则小数部分会被截断In [7]: arr2 = np.array([1.1, 2.2, 3.3, 4.4, 5.3221])In [8]: arr2Out[8]: array([ 1.1,2.2,3.3,4.4,5.3221])// 查看当前数据类型In [9]: arr2.dtypeOut[9]: dtype('float64')// 转换数据类型float -> intIn [10]: arr2.astype(np.int32)Out[10]: array([1, 2, 3, 4, 5], dtype=int32)
3.字符串数组转换为数值型
In [4]: numeric_strings = np.array(['1.2','2.3','3.2141'], dtype=np.string_)In [5]: numeric_stringsOut[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])
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 关于Sign in with Apple 后台验证的一些记录
- Python数据分析之NumPy常用函数使用详解
- java.lang.ClassCastException(在尝试通过Instagram共享打印屏幕时,无法将byte []强制转换为android.os.Parcelable错误)
- HTML|关于我踏进IT培训机构的四年
- 关于HTML/CSS模板的7个惊人秘密
- 如何在任何环境下强制基于C#的WinForms应用程序以管理员权限运行()
- Safari Webapp强制在单击其他链接时打开Safari
- 如何在Symfony 1.4中通过HTTPS(HTTP over SSL)强制全局访问
- Python数据分析--Numpy常用函数介绍(2)
- Jenkins 强制停止 job 执行