Numpy下dtype中的str_与string_的区别

        为什么写这篇文章呢,其实简单来说就是因为搜不到别人有这类的文章呗,所以自己研究了一下。

        在我的某个程序中需要将数据保存成numpy数组,数组中每个元素又必须是字符串的格式

但是当你输入dtype=numpy.str的时候,你会发现又三个相近的数据类型可选,那就是str、str_和string_了,如下图

str自然不用说,看后面就知道,builtins也就说明了这个str其实是python的内建数据类型,跟numpy数组一点关系都没有。

        所以我们将目光锁定到后面为dtype的str_和string_上,我是比较懒的人,不喜欢去翻文档,也比较注重实践检验真理,所以在这里我会通过一系列的对比来区别开这两个数据类型。


对比1,数据本身打印效果:

运行结果为:

对比2,打印数组中的元素的数据类型

运行结果:

不难看出, arr1中的每个元素,貌似均为字符串对象,而arr2中的每个元素,都是btytes对象

而arr1中的元素究竟是不是字符串呢?

对比3,字符串拼接

运行结果:

这里我只运行了arr1中元素跟字符串的拼接结果,并且是成功的,充分说明了str_就应该是dtype中真正对应python里str的那种类型,而arr2就没必要去测试了,因为结果只会是报错。不信你看, 报出来的错误就是长这个样子的。

对比4,占用内存大小对比

运行结果:

可以看到用arr1的占用内存是比arr2要大的。为什么要做这一个比较呢,因为既然用得到numpy数组却又不将里面的元素保存成数字类的数据类型的话,就根本不是考虑计算的而是考虑存储的,那既然考虑存储就一定要考虑占用内存大小这么一个问题。所以有此比较。


        综合来说,我还是会选择str_类型去操作这些数据的,你们呢?

  • 26
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值