numpy中的复合数组

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

猜你喜欢

转载自www.cnblogs.com/zengsf/p/10060577.html