import numpy as np
def solve_eps(eps):
A = np.array([[eps, 1, 0], [1, 0, 0], [0, 1, 1]])
b = np.array([1 + eps, 1, 2])
m_21 = A[1, 0] / A[0, 0]
m_31 = A[2, 0] / A[0, 0]
print("What A[1, :] should be:", A[1, :] - A[0, :] * m_21)
A[1, :] = A[1, :] - A[0, :] * m_21
print("But it won't assign it to the slice!!!!!", A[1, :])
如果我们运行solve_eps(2)
,您会看到切片未分配:
A [1,:]应该是什么:[0. -0.5 0.]
但它不会将它分配到切片!!!!! [0 0 0]
但是,如果你跑:
A = np.array([[3, 1, 1], [2, 2, 2]])
A[1, :] = A[1, :] - (A[0, :] * 4)
A [1,:] = [-10,-2,-2]
这里发生了什么?
答案 0 :(得分:3)
定义dtype=float
时设置A
:
A = np.array([[eps, 1, 0], [1, 0, 0], [0, 1, 1]], dtype=float)
分配失败的原因是因为您将浮点数分配给整数数组。
正如您所注意到的那样,将整数分配给整数切片可以正常工作。