1.复合数组的创建
# 复合数组,最重要的是定义dtype a = np.array([('ABC', [1, 2, 3])], dtype="U3, 3i4") print(a) # [('ABC', [1, 2, 3])] print(a[0]["f0"], a[0]["f1"][0]) # 默认的名称为f0, f1 ..... # ABC 1
2.如果不想用默认的名称,那就如下操作,得到的值和上面一样
b = np.array([('ABC', [1, 2, 3])], dtype=[("fa", np.str_, 3), ("fb", np.int32, 3)]) print(b) print(b[0]["fa"], b[0]["fb"][0]) c = np.array([('ABC', [1, 2, 3])], dtype={"names": ["fa", "fb"], "formats":["U3", "3i4"]}) print(c) print(c[0]["fa"], c[0]["fb"][0])
3.由于复合数组,是不是有可能就会改变数组里面的值,因此也可以为某一段数组多有一些字节或位
# 这里的0和16是偏移,以0位偏移基点,为数组预留空间 d = np.array([('ABC', [1, 2, 3])], dtype={"fa": ("U3", 0),"fb": ("3i4", 16)}) print(d) # [('ABC', [1, 2, 3])] print(d[0]["fa"], c[0]["fb"][0]) # ABC 1 print(c.itemsize) # 24 # 获取数组元素的位数, 1字节 = 8位 print(d.itemsize) # 28