Convert a numpy array of lists to a numpy array

前端 未结 2 1592
刺人心
刺人心 2020-12-17 23:50

I have some data which is stored as a numpy array with dtype=object, and I would like to extract one column of lists and convert it to a numpy array. It seems

2条回答
  •  独厮守ぢ
    2020-12-18 00:19

    Though going by way of lists is faster than by way of vstack:

    In [1617]: timeit np.array(arr[:,1].tolist())
    ...
    100000 loops, best of 3: 11.5 µs per loop
    In [1618]: timeit np.vstack(arr[:,1])
    ...
    10000 loops, best of 3: 54.1 µs per loop
    

    vstack is doing:

    np.concatenate([np.atleast_2d(a) for a in arr[:,1]],axis=0)
    

    Some alternatives:

    In [1627]: timeit np.array([a for a in arr[:,1]])
    100000 loops, best of 3: 18.6 µs per loop
    In [1629]: timeit np.stack(arr[:,1],axis=0)
    10000 loops, best of 3: 60.2 µs per loop
    

    Keep in mind that the object array just contains pointers to the lists which are else where in memory. While the 2d nature of arr makes it easy to select the 2nd column, arr[:,1] is effectively a list of lists. And most operations on it treat it as such. Things like reshape don't cross that object boundary.

提交回复
热议问题