В вашем определении матрицы отсутствует [
.... ]
.
Вы можете использовать подход Попросить прощения, а не разрешения или проверить, не превышают ли ваши заданные индексы форму матрицы:
import numpy as np
R = np.matrix ([ # missing [
[1,2,34,4,5,5,6,9],
[1,2,34,4,5,5,6,9],
[1,2,34,4,5,5,6,9]
]) # missing ]
print( R.shape ) # (3,8)
def indexAvailable(M,a,b):
# ask forgiveness not permission by simply accessing it
# when testing for if its ok to access this
try:
p = M[a,b]
except:
return False
return True
print(99,22,indexAvailable(R,99,22))
print(9,2,indexAvailable(R,9,2))
print(2,2,indexAvailable(R,2,2))
Выход:
99 22 False
9 2 False
2 2 True
Или вы можете проверить все данные индексы по форме вашей матрицы:
def indexOk(M,*kwargs):
"""Test if all arguments of kwargs must be 0 <= value < value in M.shape"""
try:
return len(kwargs) == len(M.shape) and all(
0 <= x < M.shape[i] for i,x in enumerate(kwargs))
except:
return False
print(indexOk(R,1,1)) # ok
print(indexOk(R,1,1,1)) # too many dims
print(indexOk(R,3,7)) # first too high
print(indexOk(R,2,8)) # last too high
print(indexOk(R,2,7)) # ok
Выход:
True
False
False
False
True