一个简单的元组列表:
In [146]: alist = [(1,2),(3,4),(2,1),(3,4)]
把它放在一组:
In [147]: aset = set(alist)
In [148]: aset
Out[148]: {(1, 2), (2, 1), (3, 4)}
np.array
只是将集合包装在一个对象 dtype 中:
In [149]: np.array(aset)
Out[149]: array({(1, 2), (3, 4), (2, 1)}, dtype=object)
但把它变成一个列表,并得到一个二维数组:
In [150]: np.array(list(aset))
Out[150]:
array([[1, 2],
[3, 4],
[2, 1]])
既然是元组列表,也可以做成结构化数组:
In [151]: np.array(list(aset),'i,f')
Out[151]: array([(1, 2.), (3, 4.), (2, 1.)], dtype=[('f0', '<i4'), ('f1', '<f4')])
如果元组的长度不同,则元组列表将转换为元组的一维数组(对象 dtype):
In [152]: np.array([(1,2),(3,4),(5,6,7)])
Out[152]: array([(1, 2), (3, 4), (5, 6, 7)], dtype=object)
In [153]: _.shape
Out[153]: (3,)