前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Numpy下dtype中的str_与string_的区别[通俗易懂]

Numpy下dtype中的str_与string_的区别[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-01 16:03:13
9530
发布2022-09-01 16:03:13
举报

大家好,又见面了,我是你们的朋友全栈君。

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

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

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

Numpy下dtype中的str_与string_的区别[通俗易懂]
Numpy下dtype中的str_与string_的区别[通俗易懂]

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

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


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

Numpy下dtype中的str_与string_的区别[通俗易懂]
Numpy下dtype中的str_与string_的区别[通俗易懂]

运行结果为:

Numpy下dtype中的str_与string_的区别[通俗易懂]
Numpy下dtype中的str_与string_的区别[通俗易懂]

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

Numpy下dtype中的str_与string_的区别[通俗易懂]
Numpy下dtype中的str_与string_的区别[通俗易懂]

运行结果:

Numpy下dtype中的str_与string_的区别[通俗易懂]
Numpy下dtype中的str_与string_的区别[通俗易懂]

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

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

对比3,字符串拼接

Numpy下dtype中的str_与string_的区别[通俗易懂]
Numpy下dtype中的str_与string_的区别[通俗易懂]

运行结果:

Numpy下dtype中的str_与string_的区别[通俗易懂]
Numpy下dtype中的str_与string_的区别[通俗易懂]

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

Numpy下dtype中的str_与string_的区别[通俗易懂]
Numpy下dtype中的str_与string_的区别[通俗易懂]

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

Numpy下dtype中的str_与string_的区别[通俗易懂]
Numpy下dtype中的str_与string_的区别[通俗易懂]

运行结果:

Numpy下dtype中的str_与string_的区别[通俗易懂]
Numpy下dtype中的str_与string_的区别[通俗易懂]

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


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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141791.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档