Convertir una lista de entradas, tuplas en una matriz numpy

Tengo una lista de [flotar, (flotar, flotar, flotar ..)] … que es básicamente un punto n-dimensional junto con un valor de aptitud para cada punto. Por ejemplo.

4.3, (2,3,4) 3.2, (1,3,5) . . 48.2, (23,1,32) 

Deseo muestrear aleatoriamente un punto basado en los valores de aptitud física. Decidí que la mejor manera de hacerlo sería usar numpy.random.choice(range(n), 1, plist[:,:1,:1])

Sin embargo, necesito convertir esto en una matriz numpy, para la cual probé

 >> pArr = np.array( plist ) ValueError: setting an array element with a sequence 

También recibí el mismo error para np.asarray (plist) … ¿Alguna sugerencia?

Lo siguiente debería funcionar:

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

con initial_list = [[4.3, (2, 3, 4)], [3.2, (1, 3, 5)], ...] . Tenga en cuenta que necesitamos transformar cada elemento de initial_list en una tupla para que ese truco funcione, de lo contrario NumPy no puede reconocer la estructura.

Ahora puedes acceder a tus entradas de fitness como A['fitness'] , con los puntos correspondientes como A['point'] . Si selecciona una lista de entradas de aptitud real, indices , los puntos correspondientes están dados por A['point'][indices] , que es una matriz simple (n,3) .

Tu pregunta es difícil de entender. ¿Es esto lo que estás tratando de hacer?

 >>> 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. ]])