- 复合类型
"""
第一层必须是元组
默认情况下,需要每个元素的数据类型保持一致
如果每个元素的元素类型不一致,需要分别指定每个元素的类型
指定元素类的方式:
方式一:
np.array(data,dtype="3str,int,3int")
方式二:简写
np.array(data,dtype="U3,i,3i")
字符码 简写
bool ?
int8/16/32/64 i1/2/4/8
float8/16/32/64 f1/2/4/8
str U<字符数>
datetime64 M8[Y] M8[M] M8[D] M8[h] M8[m] M8[s]
方式三:别名
dtype=[
('name','U3'),
('sno','i'),
('score','i',3)
]
a = np.array(data,dtype=dtype)
b = a[0][0] # 通过下标取
c = a[0]['name'] #通过列名取值
object : 任意类型
"""
data = [
("张三s",1,[89,90,70]),
("李四",2,[99,89,77]),
("王五是",3,[77,99,88])
]
a = np.array(data,dtype="U3,i,3i")
print(a)
# 遍历
for stu in a:
for s in stu:
print(s)
for stu in a:
print("学号:",stu[1])
print("姓名:",stu[0])
print("成绩:")
print("语文",stu[2][0],"数学:",stu[2][1],"英语",stu[2][2])
- 方式2
data = [
("张三s",1,[89,90,70]),
("李四",2,[99,89,77]),
("王五是",3,[77,99,88])
]
dtype=[
('name','U3'),
('sno','i'),
('score','i',3)
]
a = np.array(data,dtype=dtype)
print(a)
b = a[0][0] # 通过下标取
print(b)
c = a[0]['name'] # 通过列名取值
print(c)
- 日期
data = [
"2023",
"2023-11",
"2023-11-09",
"2023-11-09 11:16:15"
]
a = np.array(data)
# 进行类型转换
b = a.astype("M8[h]")
print(b)
print(b.dtype)
# 计算
c = b[0]-b[1]
print(c)
- 切片
a = np.arange(20,38)
print(a)
print(a[2:5]) # 取出下标2-4的元素
print(a[:5]) # 取出下标0-4的元素
print(a[2:]) # 取出下标2-最后 的元素)
print(a[2:10:2]) # 取值后 下标+2
print(a[::-1]) # 倒叙数组
a.shape = (3,6)
print(a)
print("-"*50)
print(a[1:3])
print(a[0,0]) # 获取下标0,0的元素
print(a[0][0]) # 获取下标0,0的元素
print(a[0,0:3]) # 0行 0-2的元素
print(a[:2,:3]) # 0-1行中的 0-2列的元素
print(a[:2,2:5])
print(a[:,2:5])
标签:下标,dtype,基础,data,stu,使用,print,NumPy,M8
From: https://www.cnblogs.com/dogleftover/p/17825042.html