Допустим, у меня есть два массива: и b = array([1,2,3,4,0,5,6])
. Я заинтересован в том, чтобы удалить экземпляры, где a
и b
- 0
. Но я также хочу удалить соответствующие экземпляры из обоих списков. Поэтому я хочу, чтобы в итоге было a = array([1,2,3,5])
и b = array([1,2,3,5])
. Это связано с тем, что a[3] == 0
и a[6] == 0
, поэтому оба b[3]
и b[6]
также удалены. Кроме того, так как b[4] == 0
, a[4]
также deleted.Its просто сделать это для скажу два массивов:Удаление значений из нескольких массивов, имеющих определенное значение
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)
Однако это решение оленьей кожи масштабироваться, если у меня есть много много массивов (которые я делаю). Какой был бы более элегантный способ сделать это?
Если я стараюсь следующее:
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)
я a = array([1, 2, 3, 4])
и b = array([1, 2, 3, 0])
, а не ответы мне нужно. Любая идея, где это неправильно?
сделать все массивы имеют одинаковую длину? – dnalow
@ dnalow Да, они имеют одинаковую длину. – deserthiker