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

Numpy下dtype中的str_与string_的区别[通俗易懂]    为什么写这篇文章呢,其实简单来说就是因为搜不到别人有这类的文章呗,所以自己研究了一下。    在我的某个程序中需要将数据保存成numpy数组,数组中每个元素又必须是字符串的格式但是当你输入dtype=numpy.str的时候,你会发现又三个相近的数据类型可选,那就是str、str_和string_了,如下图str自然不用说,看后面就知道,builtins也就…

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

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

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

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

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

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

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


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

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

运行结果为:

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

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

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

运行结果:

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

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

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

对比3,字符串拼接

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

运行结果:

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

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

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

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

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

运行结果:

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

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


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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号