关于numpy强制类型转换的问题

 更新时间:2022年05月23日 09:45:40   投稿:jingxian  
这篇文章主要介绍了关于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])

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python3.4爬虫demo

    python3.4爬虫demo

    今天小编就为大家分享一篇关于python3.4爬虫demo,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • APIStar:一个专为Python3设计的API框架

    APIStar:一个专为Python3设计的API框架

    今天小编就为大家分享一篇关于一个专为Python3设计的API框架:APIStar,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09
  • Python使用代理抓取网站图片(多线程)

    Python使用代理抓取网站图片(多线程)

    Python作为一门功能强大的脚本语言,经常被用来写爬虫程序,下面是使用Python通过代理进行多线程抓取图片,算是一个简易的python多线程爬虫
    2014-03-03
  • python set()去重的底层原理及实例

    python set()去重的底层原理及实例

    python中集合set是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素,还可以计算交集、差集、并集等,它与列表(list)的行为类似,这篇文章主要介绍了python set()去重的底层原理,需要的朋友可以参考下
    2022-01-01
  • python3 读写文件换行符的方法

    python3 读写文件换行符的方法

    下面小编就为大家分享一篇python3 读写文件换行符的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python输出汉字字库及将文字转换为图片的方法

    Python输出汉字字库及将文字转换为图片的方法

    这篇文章主要介绍了Python输出汉字字库及将文字转换为图片的方法,分别用到了codecs模块和pygame模块,需要的朋友可以参考下
    2016-06-06
  • 将Pytorch模型从CPU转换成GPU的实现方法

    将Pytorch模型从CPU转换成GPU的实现方法

    今天小编就为大家分享一篇将Pytorch模型从CPU转换成GPU的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python 多线程与多进程效率测试

    python 多线程与多进程效率测试

    这篇文章主要介绍了python 多线程与多进程效率测试,在Python中,计算密集型任务适用于多进程,IO密集型任务适用于多线程、接下来看看文章得实例吧,需要的朋友可以参考一下哟
    2021-10-10
  • 对python捕获ctrl+c手工中断程序的两种方法详解

    对python捕获ctrl+c手工中断程序的两种方法详解

    今天小编就为大家分享一篇对python捕获ctrl+c手工中断程序的两种方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • pytorch 如何使用amp进行混合精度训练

    pytorch 如何使用amp进行混合精度训练

    这篇文章主要介绍了pytorch 使用amp进行混合精度训练的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05

最新评论