Enregistrer un tableau à partir d'un tableau de tableaux sous certaines conditions

2020-08-01 python arrays

J'ai un tableau de tableaux et je veux sauvegarder tous les enregistrements dont le dernier élément est égal à zéro. Comment puis-je faire ceci? J'ai quelque chose comme ça.

array([[-0.88420819, -1.01983669,  1.12353698, ..., -2.18137332,
         1.12353698,  3.        ],
       [ 0.55632749, -1.97404661,  0.79290805, ..., -0.83084723,
         0.79290805,  0.        ],
       [-1.17401272, -3.25402615, -1.55695256, ..., -1.08043287,
        -1.55695256,  0.        ]

je veux donc sauvegarder le deuxième et le troisième enregistrement.

Answers

Le moyen le plus simple et le plus pratique serait d'utiliser la compréhension de liste et de créer une nouvelle liste. Après cela, vous pouvez le reconvertir en tableau.

remplacez arr par le nom de votre tableau

arr = [[-0.88420819, -1.01983669,  1.12353698, -2.18137332,
         1.12353698,  3.        ],
       [ 0.55632749, -1.97404661,  0.79290805, -0.83084723,
         0.79290805,  0.        ],
       [-1.17401272, -3.25402615, -1.55695256, -1.08043287,
        -1.55695256,  0.        ]]

res = [val for val in arr if val[-1] == 0]

Si vous souhaitez l'enregistrer dans une nouvelle variable, vous pouvez faire:

saved_array = []
for x in given_array:
    if x[-1] == 0:
        saved_array.append(x)

Une autre forme courte serait:

saved_array = list(filter(lambda x: x[-1]==0, given_array))

Vous pouvez utiliser des conditions dans la compréhension de liste .

old_array = [
  [-0.88420819, -1.01983669, 1.12353698, -2.18137332, 1.12353698,  3],
  [ 0.55632749, -1.97404661, 0.79290805, -0.83084723, 0.79290805, 0],
  [-1.17401272, -3.25402615, -1.55695256, -1.08043287, -1.55695256,  0]
]

new_array = [x for x in old_array if x[-1] == 0]

print(new_array)

# output:
# [[0.55632749, -1.97404661, 0.79290805, -0.83084723, 0.79290805, 0],
# [-1.17401272, -3.25402615, -1.55695256, -1.08043287, -1.55695256, 0]]

Sans le détour hors NumPy des autres réponses:

>>> a[a[:,-1] == 0]
array([[0.55632749, -1.97404661, 0.79290805, Ellipsis, -0.83084723,
        0.79290805, 0.0],
       [-1.17401272, -3.25402615, -1.55695256, Ellipsis, -1.08043287,
        -1.55695256, 0.0]], dtype=object)

Related