Используя numpy.where
жизнь намного проще.
X=np.array([[0 ,0 ,0],[0, 0, 0],[5, 8, 9],[10, 11, 12],[ 0, 0 ,0],[ 20, 3, 4]])
index = np.where(X.any(axis=1))[0] # find rows with all 0s
print(X[index])
#array([[ 5, 8, 9],
# [10, 11, 12],
# [20, 3, 4]])
РЕДАКТИРОВАТЬ:
Если вы действительно хотите восстановить его, и на основе того факта, чтоВы знаете, что удалили строки со всеми 0, затем:
Создайте новую матрицу со всеми 0:
X_new = np.zeros(X.shape)
и вставьте значения там, где они должны быть:
X_new[index] = X[index]
Теперь проверьте X_new
:
X_new
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 5., 8., 9.],
[10., 11., 12.],
[ 0., 0., 0.],
[20., 3., 4.]])