import random
x =[[random.randint(1,10) for j in range(5)] for i in range(4)]
for i in range(4):
    for j in range(5):
        print("%4d" % (x[i][j]), end="")
    print(end='\n')

Je dois trouver l'élément minimal de chaque colonne dans un tableau à deux dimensions et les ajouter dans un nouveau tableau (tableau à une dimension)

0
Ted_Bayer 2 juin 2020 à 10:43

4 réponses

Meilleure réponse

Vous pouvez utiliser une compréhension de liste pour appliquer min à chaque colonne de données:

import random
x =[[random.randint(1,10) for j in range(5)] for i in range(4)]
for i in range(4):
    for j in range(5):
        print("%4d" % (x[i][j]), end="")
    print(end='\n')

print([min(x[i][j] for i in range(4)) for j in range(5)])

Exemple de sortie:

   8   1   7   6   9
   9   2   8   6   8
  10   5   3   3   5
   1   9   7  10   9

[1, 1, 3, 3, 5]
0
Nick 2 juin 2020 à 07:47

Vous devriez regarder dans numpy () et plus particulièrement np.min (). Le code peut alors être:

# Convert 'x' to np array-
x_np = np.asarray(x)

# Sanity check-
x_np
'''
array([[ 8,  7, 10,  8,  8],
       [ 6,  6,  3,  6,  6],
       [ 9,  4,  2,  8,  3],
       [ 2,  4,  5,  3,  4]])
'''

# Minimum elements by squashing the columns-
np.min(x_np, axis = 1)
# array([7, 3, 2, 2])

# Minimum elements by squashing the rows-
np.min(x_np, axis = 0)
# array([2, 4, 2, 3, 3])
0
Arun 2 juin 2020 à 07:52

Utilisez simplement min sur chaque colonne et la compréhension de la liste.

x_new = [min(x_i) for x_i in x]
0
Zabir Al Nazi 2 juin 2020 à 07:47

Utilisez np.min(arr_name, axis=1).

0
Abhishek Verma 2 juin 2020 à 07:46