Sagen wir, ich habe zwei Arrays: a = array([1,2,3,0,4,5,0])
und b = array([1,2,3,4,0,5,6])
. Ich bin daran interessiert, die Instanzen zu entfernen, in denen a
und b
0
sind. Aber ich möchte auch die entsprechenden Instanzen aus beiden Listen entfernen. Daher möchte ich mit a = array([1,2,3,5])
und b = array([1,2,3,5])
enden. Dies liegt daran, dass a[3] == 0
und a[6] == 0
, also sowohl b[3]
als auch b[6]
gelöscht werden. Ebenso seit b[4] == 0
wird a[4]
deleted.Its auch einfach, dies zu tun für etwa zwei Arrays:Löschen von Werten aus mehreren Arrays mit einem bestimmten Wert
import numpy as np
a = np.array([1,2,3,0,4,5,0])
b = np.array([1,2,3,4,0,5,6])
ix = np.where(b == 0)
b = np.delete(b, ix)
a = np.delete(a, ix)
ix = np.where(a == 0)
b = np.delete(b, ix)
a = np.delete(a, ix)
Doch diese Lösung doesnt Scale-up, wenn ich viele viele Arrays haben (was ich tun). Was wäre eine elegantere Art, dies zu tun?
Wenn ich versuche, die folgenden:
import numpy as np
a = np.array([1,2,3,0,4,5,0])
b = np.array([1,2,3,4,0,5,6])
arrays = [a,b]
for array in arrays:
ix = np.where(array == 0)
b = np.delete(b, ix)
a = np.delete(a, ix)
ich a = array([1, 2, 3, 4])
und b = array([1, 2, 3, 0])
, nicht die Antworten, die ich brauche. Irgendeine Idee, wo das falsch ist?
tun alle Arrays die gleiche Länge haben? – dnalow
@dnalow Ja, sie haben die gleiche Länge. – deserthiker