Вот как вы можете сделать это с помощью numpy:
In [96]: l1=[0, ['0.2000', '0.2000', '3.0000', '0.5000']]
In [97]: l2=np.array(tuple(l1),dtype=[('f1','int'),('f2','float',4)])
In [98]: l2
Out[98]:
array((0, [0.20000000000000001, 0.20000000000000001, 3.0, 0.5]),
dtype=[('f1', '<i4'), ('f2', '<f8', 4)])
Если ваш фактический список выглядит примерно так:
In [99]: l3=[0, ['0.2000', '0.2000', '3.0000', '0.5000'], 1, ['.1','.2','.3','0.4']]
тогда вы можете использовать идиому группировщика zip(*[iter(l3)]*2))
, чтобы сгруппировать каждые 2 элемента в кортеж:
In [104]: zip(*[iter(l3)]*2)
Out[104]: [(0, ['0.2000', '0.2000', '3.0000', '0.5000']), (1, ['.1', '.2', '.3', '0.4'])]
и передайте это np.array
:
In [105]: l4=np.array(zip(*[iter(l3)]*2),dtype=[('f1','int'),('f2','float',4)])
In [106]: l4
Out[106]:
array([(0, [0.20000000000000001, 0.20000000000000001, 3.0, 0.5]),
(1, [0.10000000000000001, 0.20000000000000001, 0.29999999999999999, 0.40000000000000002])],
dtype=[('f1', '<i4'), ('f2', '<f8', 4)])