意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

numpy强制类型转换怎样做,会出现哪些问题

来源:恒创科技 编辑:恒创科技编辑部
2023-12-30 21:57:59
今天小编跟大家讲解下有关“numpy强制类型转换怎样做,会出现哪些问题”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。


numpy强制类型转换怎样做,会出现哪些问题

numpy强制类型转换

今天用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类型强制转换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]: 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')

2.转换数据类型

// 如果将浮点数转换为整数,则小数部分会被截断
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)

3.字符串数组转换为数值型

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])



以上就是关于“numpy强制类型转换怎样做,会出现哪些问题”的介绍了,感谢各位的阅读,如果大家想要了解更多相关的内容,欢迎关注恒创科技,小编每天都会为大家更新不同的知识。
上一篇: Python XOR算法有什么好处,XOR过程是怎样的 下一篇: Python区块链块添加的实现及详细过程是什么