Converting a list of ints, tuples into an numpy array

前端 未结 2 1473
太阳男子
太阳男子 2021-01-28 09:17

I have a list of [float, (float,float,float..) ] ... Which is basically an n-dimensional point along with a fitness value for each point. For eg.

4.3, (2,3,4)
         


        
相关标签:
2条回答
  • 2021-01-28 09:29

    Your question is difficult to understand. Is this what you're trying to do?

    >>> x
    [[4.3, (2, 3, 4)], [3.2, (1, 3, 5)], [48.2, (23, 1, 32)]]
    >>> np.array([(a, b, c, d) for a, (b, c, d) in x])
    array([[  4.3,   2. ,   3. ,   4. ],
           [  3.2,   1. ,   3. ,   5. ],
           [ 48.2,  23. ,   1. ,  32. ]])
    
    0 讨论(0)
  • 2021-01-28 09:49

    The following should work:

    A = np.array([tuple(i) for i in initial_list],dtype=[('fitness',float),('point',(float,3))])
    

    with initial_list = [[4.3, (2, 3, 4)], [3.2, (1, 3, 5)], ...]. Note that we need to transform each item of initial_list into a tuple for that trick to work, else NumPy cannot recognize the structure.

    Your fitness entries are now accessible as A['fitness'], with the corresponding points as A['point']. If you select a list of actual fitness entries, indices, the corresponding points are given by A['point'][indices], which is a simple (n,3) array.

    0 讨论(0)
提交回复
热议问题