Допустим, у вас есть массив 5x5x5
a = np.ones((5,5,5))
a[:,3,:] = 0
a[:,:,3] = 0
(я знаю, это ужасно)
Возвращает
[[[1. 1. 1. 0. 1.]
[1. 1. 1. 0. 1.]
[1. 1. 1. 0. 1.]
[0. 0. 0. 0. 0.]
[1. 1. 1. 0. 1.]]
[[1. 1. 1. 0. 1.]
[1. 1. 1. 0. 1.]
[1. 1. 1. 0. 1.]
[0. 0. 0. 0. 0.]
[1. 1. 1. 0. 1.]]
[[1. 1. 1. 0. 1.]
[1. 1. 1. 0. 1.]
[1. 1. 1. 0. 1.]
[0. 0. 0. 0. 0.]
[1. 1. 1. 0. 1.]]
[[1. 1. 1. 0. 1.]
[1. 1. 1. 0. 1.]
[1. 1. 1. 0. 1.]
[0. 0. 0. 0. 0.]
[1. 1. 1. 0. 1.]]
[[1. 1. 1. 0. 1.]
[1. 1. 1. 0. 1.]
[1. 1. 1. 0. 1.]
[0. 0. 0. 0. 0.]
[1. 1. 1. 0. 1.]]]
Что я хочу сделать, так это удалить все строки и столбцы по всей оси, равной 0, и вернуть новый массив 4x4x4, содержащий только 1 с.
Я могу сделать это для двумерного массива с
a = np.delete(a,np.where(~a.any(axis=0))[0], axis=1)
a = a[~np.all(a == 0, axis=1)]
Но не могу понять, как это сделать с 3 измерениями
У кого-нибудь есть идеи, как это можно сделать?