day03-numpy数据类型

numpy数据类型

名称描述名称描述
bool_布尔型数据类型(True 或者 False)float_float64 类型的简写
int_默认的整数类型(类似于 C 语言中的 long,int32 或 int64)float16/32/64半精度浮点数:1 个符号位,5 个指数位,10个尾数位 单精度浮点数:1 个符号位,8 个指数位,23个尾数位 双精度浮点数,包括:1 个符号位,11 个指数位,52个尾数位
intc和 C 语言的 int 类型一样,一般是 int32 或 int 64complex_复数类型,与 complex128 类型相同
intp用于索引的整数类型(类似于 C 的 ssize_t,通常为 int32 或 int64)complex64/128复数,表示双 32 位浮点数(实数部分和虚数部分) 复数,表示双 64 位浮点数(实数部分和虚数部分)
int8/16/32/64代表与1字节相同的8位整数 代表与2字节相同的16位整数 代表与4字节相同的32位整数 代表与8字节相同的64位整数str_表示字符串类型
uint8/16/32/64代表1字节(8位)无符号整数 代表与2字节相同的16位整数 代表与4字节相同的32位整数 代表与8字节相同的64位整数string_表示字节串类型,也就是bytes类型
#将数组中的类型存储为浮点型,
a = np.array([1,2,3,4],dtype=np.flaot64)
#a为:array([1., 2., 3., 4.])
#将数组中的类型存储为布尔类型
a = np.array([0,1,2,3,4],dtype=np.bool_)

numpy中数据类型 ’ str_ ‘和’ string_ ’ 的区别

numpy.str_:

  • numpy.str_ 是一个 NumPy 特有的数据类型,它对应于 Python 的内建字符串类型 str
  • 它表示的是一种定长的字符串数据类型,通常用于表示单个字符或较短的字符串。
  • 当你使用 numpy.str_ 时,NumPy 会使用 Python 的字符串类型来存储和处理这些字符串

numpy.string_:

  • numpy.string_ 是另一个用于表示字符串的数据类型,但它更接近于 C 语言中的字符串数组(字符数组)。
  • numpy.string_ 通常用于表示定长的字节字符串,可以用于处理较长的字符串或需要固定长度的字符串。
  • 它对应于 NumPy 的 S 类型,例如 S10 表示长度为 10 的字节字符串。
  • 它适合于需要进行低级别字符操作或者与C/C++代码交互的情况

简单来说

numpy.str_ 更接近于 Python 的内建字符串类型,用于表示 Unicode 字符串。

numpy.string_ 更接近于 C 语言中的字符串数组,用于表示定长的字节字符串。

自定义结构化数据

使用数据类型标识码

字符对应类型字符对应类型字符对应类型字符对应类型
b代表布尔型i带符号整型u无符号整型f浮点型
c复数浮点型m时间间隔(timedelta)Mdatatime(日期时间)OPython对象
S,a字节串(S)与字符串(a)UUnicodeV原始数据(void)

还可以将两个字符作为参数传给数据类型的构造函数。此时,第一个字符表示数据类型, 第二个字符表示该类型在内存中占用的字节数(2、4、8分别代表精度为16、32、64位的 浮点数)

i1表示8位字节的整型。

#首先创建结构化数据类型
dt = np.dtype([('age','i1')]) #创建了名为age这种数据类型在内存中的存储格式为int8。
print(dt)
#将数据类型应用于ndarray对象
students = np.array([(18),(19),dtype = dt])
print(students,students.dtype,students.ndim)
print(students['age'])
dt = np.dtype([('age','U1')]) #名为age这种数据类型在内存中的存储格式为Unicode8。
print(dt)
# 将数据类型应用于 ndarray 对象
students = np.array([("我们"),(128)],dtype=dt)
print(students,students.dtype,students.ndim)
print(students['age'])

[('age', '<U1')]
[('我',) ('1',)] [('age', '<U1')] 1
['我' '1']

以下示例描述一位老师的姓名、年龄、工资的特征,该结构化数据其包含以下字段:

str 字段:name
int 字段:age
float 字段:salary
teacher = np.dtype([('name',np.str_,2),('aege','i1'),('salary','f4')])
#说明,第一个数据类型name,使用np.str_的存储格式,占用2个字节,第二个age...

#将其应用于ndaray对象
b = np.array([('w1',41,4564.2),
              ('si',32,3564)],dtype = teacher)

print(b)
print(b['name'])
print(b['age'])
[('w1', 41, 4564.2) ('si', 32, 3564. )]
['w1' 'si']
[41 32]

在这里插入图片描述

注意超过范围后如何变化,记忆就想时钟

2.字符串的长度

  • .定长
#创建字符串时取其中元素最大长度
a = np.array(['a','ab','abc','我','你哦得到','12345'],dtype = np.str_)
print(a)

a[1] = '123456'
print(a)

则所有元素存储时为U5存储,修改时不会存储超过定义时的内存大小,超过的舍去

  • 不定长
a = np.array(['a','ab'],dtype = object)
print(a)

a[1] = 'ojijij'  #可变

定长不灵活效率高
可变长度灵活效率低

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值