In [1]:
import numpy as np

In [2]:
arr = np.array([[2, 5], [1, 3]])

In [3]:
arr_inv = np.linalg.inv(arr)
print(arr_inv)


[[ 3. -5.]
 [-1.  2.]]

In [4]:
mat = np.matrix([[2, 5], [1, 3]])

In [5]:
mat_inv = np.linalg.inv(mat)
print(mat_inv)


[[ 3. -5.]
 [-1.  2.]]

In [6]:
mat_inv = mat**-1
print(mat_inv)


[[ 3. -5.]
 [-1.  2.]]

In [7]:
mat_inv = mat.I
print(mat_inv)


[[ 3. -5.]
 [-1.  2.]]

In [8]:
result = mat * mat.I
print(result)


[[1. 0.]
 [0. 1.]]

In [9]:
# print(arr.I)
# AttributeError: 'numpy.ndarray' object has no attribute 'I'

In [10]:
arr_s = np.array([[0, 0], [1, 3]])

In [11]:
# print(np.linalg.inv(arr_s))
# LinAlgError: Singular matrix

In [12]:
arr_pinv = np.linalg.pinv(arr_s)
print(arr_pinv)


[[0.  0.1]
 [0.  0.3]]

In [13]:
print(arr_s @ arr_inv)


[[0. 0.]
 [0. 1.]]

In [14]:
print(np.linalg.pinv(arr_pinv))


[[0. 0.]
 [1. 3.]]

In [15]:
print(np.linalg.inv(arr))


[[ 3. -5.]
 [-1.  2.]]

In [16]:
print(np.linalg.pinv(arr))


[[ 3. -5.]
 [-1.  2.]]

In [17]:
mat_s = np.mat([[0, 0], [1, 3]])

In [18]:
# print(np.linalg.inv(mat_s))
# LinAlgError: Singular matrix

In [19]:
# print(mat_s**-1)
# LinAlgError: Singular matrix

In [20]:
# print(mat_s.I)
# LinAlgError: Singular matrix

In [21]:
print(np.linalg.pinv(mat_s))


[[0.  0.1]
 [0.  0.3]]