Tengo elementos n en una lista A. Cada elemento de la lista es una matriz y cada elemento tiene un tamaño diferente (por ejemplo, para el elemento 1st el tamaño es a1 x b1, para el segundo su elemento a2 x b2 y para el elemento nth es an x bn). Cómo extraer la matriz completa de ese elemento que tiene el tamaño máximo de matriz. Por ejemplo n = 4 (puede ser más, no conocido antes).

List A (4 elements)
    n = 1, size =  10 x 2   array([[some numbers in 2D]])
    n = 2, size =  20 x 2   array([[some numbers in 2D]])
    n = 3, size =  15 x 2   array([[some numbers in 2D]])
    n = 4, size =  12 x 2   array([[some numbers in 2D]])

En esta lista quiero extraer la matriz en el índice, n = 2 usando la función max

-2
Manish Sharma 27 feb. 2018 a las 12:59

3 respuestas

La mejor respuesta

Asumiendo que te entendí correctamente:

lst = [np.zeros((10, 2)), np.zeros((20, 2)),
       np.zeros((15, 2)), np.zeros((12, 2))]
result = sorted(lst, key=lambda x: x.shape[0] * x.shape[1])[-1]

Esto ordena su lista por el producto de las dimensiones de la matriz y devuelve la mayor de ellas.

0
jsmolka 27 feb. 2018 a las 10:25
import numpy 
l=[
  [[1,2],[2,3,4]],
  [[1,3,41,1234,12],[123,1234,1234,],[1234,34,1234,13,123,123]],
  [[1,3,41,1234,12],[123,1234,1234,],[1234,34,1234]]
  ]
max_l=[]
sizen=len(l[0])
sizem=len(l[0][0])
sizex=sizen*sizem
for i in l:
  if sizex<(len(i)*len(i[0])):
    sizex=(len(i)*len(i[0]))
    max_l=i
for i in max_l:
  print(i)
0
Jay Shankar Gupta 27 feb. 2018 a las 10:19

Aquí hay un camino. Asume, según su ejemplo, que solo se requiere el recuento de filas.

import numpy as np

lst = [np.zeros((10, 2)), np.zeros((20, 2)),
       np.zeros((15, 2)), np.zeros((12, 2))]

lens = list(map(len, lst))  # [10, 20, 15, 12]
lst[lens.index(max(lens))]  # np.zeros((20, 2))
0
jpp 27 feb. 2018 a las 10:23