首页  /  人工智能  /  数据分析之-numpy(二)

数据分析之-numpy(二)

 作者:白驹    来源:    浏览:374    日期:2021年5月8日  

ndarray对象属性操作详解

Numpy的内部基本数据类型

类型名 类型表示符号
布尔型 bool_
有符号整数型 int8(-128~127)/int16/int32/int64
无符号整数型 uint8(-128~127)/uint816/uint832/uint864
浮点型 float16/float32/float64
复数型 complex64/complex128
字符串型 str,每个字符串用32为unicode编码表示

自定义复合类型

#自定义复合类型
import numpy as np
data = [
    ('zs', [90, 80, 85], 15),
    ('ls', [92, 81, 83], 16),
    ('ww', [95, 85, 95], 15)
]
# 第一种设置dtype的方式  这里u必须大写
a = np.array(data, dtype='U2,3int32,int32')
print(a)
print(a[0]['f0'], ":", a[1]['f1'])
print("==================================")
#第二种设置dtype方式
b = np.array(data,dtype=[
    ('name','str',2),
    ('scores','int32',3),
    ('age','int32',1)
])
print(b[0]['name'],":",b[0]['scores'])
print("=========================================")
#第三种设置dtype的方式
c = np.array(data,dtype={
    "names":["name","scores","age"],
    "formats":["U2","3int32","int32"]
})
print(c[0]["name"],":",c[0]["scores"],":",c.itemsize)
print("==================================")
#第四种设置dtype的方式 "name":('U3',0), 元组中后面的0表示字节偏移量,用来操作内存 提高效率
d = np.array(data,dtype={
    "name":('U3',0),
    "scores":('3int32',16),
    "age":('int32',25)
})
print(d[0]["name"],":",d[0]["scores"],":",d.itemsize)
print("===================================")
#第五种设置dtype方式
# e = np.array([0x1234,0x5667],dtype=("u2",{
#     'lowc':('u1',0),
#     'hignc':('u1',1),
# }))
# print('%x' % e[0])
# print('%x %x'%(e['lowc'][0],e['hignc'][0]))
# print("===================================")

#测试日期类型数组  日期格式必须是  2013-01-01 01:01:01
f = np.array(['2011','2012-01-01','2013-01-01 01:01:01','2011-02-01'])
print(f.dtype)
f = f.astype('M8[D]')  #M8 datetime64  D 就是精确度D代表天
print(f)
print(f[3]-f[0])   #输出   31 days   由上面的精确度决定
f = f.astype('int32')
print(f[3]-f[0])
print("====================================")
g = np.array([
    [1+1j,2+4j,3+7j],
    [4+2j,5+5j,6+8j],
    [7+3j,8+6j,9+9j]
])
print(g.T)

for x in g.flat:
    print(x.imag)

类型字符码

类型名 类型表示符号
np.bool_ ?
np.int8/16/32/64 i1/i2/i4/i8
np.uint8/16/32/64 u1/u2/u4/u8
np.float/16/32/64 f2/f4/f8
np.complex64/128 c8/c16
np.str_ U<字符数>
np.datetime64 M8[Y] M8[M] M8[D] M8[h] M8[m] M8[s]

字节序前缀,用于多字节整数和字符串

/[=]分别表示小端/大端/硬件字节序

类型字符码格式

3i4 释义
3i4 大端字节序,3个元素的一位数组,每个元素都是整型,每个整型元素占4个字节。
<(2,3)u8 小端字节序,6个元素2行3列的二位数组,每个元素都是无符号整型,每个无符号整型元素占8个字节。
U7 包含7个字符的unicode字符串,每个字符串占4个字节,采用默认字节序。
  • 评论
  • 相关评论
12345678
回复    删除