大家好,又见面了,我是你们的朋友全栈君。
为什么写这篇文章呢,其实简单来说就是因为搜不到别人有这类的文章呗,所以自己研究了一下。
在我的某个程序中需要将数据保存成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_类型去操作这些数据的,你们呢?
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141791.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...