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 64 | complex_ | 复数类型,与 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) | M | datatime(日期时间) | O | Python对象 |
S,a | 字节串(S)与字符串(a) | U | Unicode | V | 原始数据(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' #可变
定长不灵活效率高
可变长度灵活效率低