Я написал функцию, чтобы увидеть, если матрица симметрична или нет:Прочитайте одну конкретную ячейку Numpy матрицы
def issymmetric(mat):
if(mat.shape[0]!=mat.shape[1]):
return 0
for i in range(mat.shape[0]):
for j in range(i):
if (mat[i][j]!=mat[j][i]):
return 0
return 1
Он хорошо работает со встроенным ndarrays, например numpy.ones:
import numpy as np
a=np.ones((5,5), int)
print issymmetric(a)
И с Numpy массивам
import numpy as np
a=np.array([[1, 2, 3], [2, 1 , 2], [3, 2, 1]])
print issymmetric(a)
Но когда дело доходит до Numpy матрицы:
import numpy as np
a=np.matrix([[1, 2, 3], [2, 1 , 2], [3, 2, 1]])
print issymmetric(a)
Это Гав мне эту ошибку:
File "issymetry.py", line 9, in issymmetric
if (mat[i][j]!=mat[j][i]):
File "/usr/lib/python2.7/dist-packages/numpy/matrixlib/defmatrix.py", line 316, in __getitem__
out = N.ndarray.__getitem__(self, index)
IndexError: index 1 is out of bounds for axis 0 with size 1
shell returned 1
Это потому, что нет [0] [1]
a[0]
matrix([[1, 2, 3]])
. a[0][0]
есть matrix([[1, 2, 3]])
тоже., Но нет a[0][1]
.
Как исправить эту проблему, не меняя тип матрицы или функцию?
В общем, как правильно читать и обновлять одну конкретную ячейку матрицы numpy?