10

構造化配列をベクトルに変換する Pythonic な方法はありますか?

例えば:

次のような配列を変換しようとしています:

[(9,), (1,), (1, 12), (9,), (8,)]

次のようなベクトルに:

[9,1,1,12,9,8]
4

3 に答える 3

12
In [15]: import numpy as np

In [16]: x = np.array([(9,), (1,), (1, 12), (9,), (8,)])

In [17]: np.concatenate(x)
Out[17]: array([ 9,  1,  1, 12,  9,  8])

別のオプションは ですnp.hstack(x)が、この目的でnp.concatenateはより高速です。

In [14]: x = [tuple(np.random.randint(10, size=np.random.randint(10))) for i in range(10**4)]

In [15]: %timeit np.hstack(x)
10 loops, best of 3: 40.5 ms per loop

In [16]: %timeit np.concatenate(x)
100 loops, best of 3: 13.6 ms per loop
于 2013-08-04T23:37:57.737 に答える
7

を使用する必要はありませんnumpy。次を使用できますsum

myList = [(9,), (1,), (1, 12), (9,), (8,)]
list(sum(myList, ()))

結果:

[9, 1, 1, 12, 9, 8]
于 2013-08-05T00:37:00.827 に答える