import numpy as np
A = np.array([[1, 1], [1, 2], [3, 1]])
B = np.array([[2, 3], [3, 2], [1, 4]])
C = np.array([[1, 2], [3, 4]])
# same shapes --> operations are not a problem
print(A+B)
print(A*B)
# shapes differ --> numpy raises ValueError
print(A+C)
print(A*C)
ValueError поднятый NumPy, как следующее:
ValueError: operands could not be broadcast together with shapes (3,2) (2,2)
Как вы можете видеть, формы проверяются numpy
перед выполнением любой операции массива.
Однако, если вы хотите сделать это вручную, или хотите, чтобы поймать исключение, поднятый numpy
вы можете сделать что-то вроде этого:
# prevent numpy raising an ValueError by prooving array's shapes manually before desired operation
def multiply(arr1, arr2):
if arr1.shape == arr2.shape:
return arr1 * arr2
else:
print('Shapes are not equal. Operation cannot be done.')
print(multiply(A, B))
print(multiply(A, C))
# prevent numpy raising an ValueError by prooving array's shapes manually before desired operation
def add(arr1, arr2):
if arr1.shape == arr2.shape:
return arr1 + arr2
else:
print('Shapes are not equal. Operation cannot be done.')
print(add(A, B))
print(add(A, C))
# catch the error/exception raised by numpy and handle it like you want to
try:
result = A * C
except Exception as e:
print('Numpy raised an Exception (ValueError) which was caught by try except.')
else:
print(result)
... Что? Вы хотите проверить размеры? Когда вы пытаетесь добавить массивы с неравными размерами, numpy будет вызывать ошибку. –
Вы можете «попробовать» [EAFP] (https://docs.python.org/3.5/glossary.html#term-eafp) 'except', вы, вероятно, не знаете, что это (пока). –