Ответ 1
Если вы правильно поняли, вы хотите сделать чек
all((arr[:,:,x].T==arr[:,:,x]).all() for x in range(arr.shape[2]))
без цикла Python. Вот как это сделать:
(arr.transpose(1, 0, 2) == arr).all()
Есть ли лучший питонический способ проверки, является ли ndarray диагонально симметричным в определенном измерении? т.е. для всех х
(arr[:,:,x].T==arr[:,:,x]).all()
Я уверен, что мне не хватает ответа (duh), но его 2:15 здесь...:)
EDIT: уточнить, я ищу более "элегантный" способ:
for x in range(xmax):
assert (arr[:,:,x].T==arr[:,:,x]).all()
Если вы правильно поняли, вы хотите сделать чек
all((arr[:,:,x].T==arr[:,:,x]).all() for x in range(arr.shape[2]))
без цикла Python. Вот как это сделать:
(arr.transpose(1, 0, 2) == arr).all()
Если ваш массив содержит поплавки (особенно если они являются результатом вычисления), используйте allclose
np.allclose(arr.transpose(1, 0, 2), arr)
Если некоторые из ваших значений могут быть NaN
, установите те значения маркера перед тестом.
arr[np.isnan(arr)] = 0