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_类型去操作这些数据的,你们呢?

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Aliddns插件使用:小白超详细图文教程

    Aliddns插件使用:小白超详细图文教程Aliddns插件使用:小白超详细图文教程。Aliddns插件,用阿里的云解析速度是快,天下武功为快不破….作为一个小白的我,看这篇帖子也是一脸懵逼,http://koolshare.cn/thread-64703-1-1.html经过自己不耻下问的精神,总算完全搞明白了…给大家带来完整超详细的教程:首先你宽带要是公网IP,不是公网IP的童鞋,可以到

    2022年5月2日
  • yum 命令讲解「建议收藏」

    yum 命令讲解「建议收藏」(一)yum介绍Yum(全称为YellowdogUpdater,Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。 …

    2022年5月5日
  • Laravel引入第三方库的方法

    Laravel引入第三方库的方法

    2021年10月25日
  • Windows环境安装MySQL server「建议收藏」

    Windows环境安装MySQL server「建议收藏」从MySQL官网下载安装包,下载CommunityServer的zip即可,如mysql-5.7.23-winx64.zip,也可以下载Installer版,这里说的是CommunityServer版。把下载好的zip包解压到一个合适的位置,本文给出的命令是基于解压在D:\mysql-5.7.23-winx64下。在安装之前检测一下当前环境是否有VS环境,没有的话去微软官网下一个Visua…

    2022年9月14日
  • 呼叫中心系统功能介绍图_汽车功能介绍

    呼叫中心系统功能介绍图_汽车功能介绍·个性化IVR1.个性化IVR交互式语音引导流程,树状逻辑、分层次、多分支、动态节点、自由跳转,用户可根据业务发展需要随时自行修改流程,无需厂家支持。2.用户自定义录制欢迎词等提示音

    2022年8月1日
  • Android Studio实现一个点餐系统「建议收藏」

    Android Studio实现一个点餐系统「建议收藏」AndroidStudio实现一个点餐系统写在前面之前做的期末作业,现在发到博客上,作业要求如下:手机点餐系统功能:1.数据管理菜品类别:凉菜;热菜;汤菜;主食;酒水菜品管理:菜品的编号;名称;价格;所属类别;备注餐桌管理:桌号;人数2.点餐新开桌:桌号->点餐加菜:桌号->点餐3.结账根据桌号结单(可显示点餐明细与价格)4.流水查阅根据时间段查阅销售额…

    2022年6月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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