变换一个数组的片段不起作用

时间:2018-02-15 00:05:23

标签: python python-3.x numpy

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]

这里发生了什么?

1 个答案:

答案 0 :(得分:3)

定义dtype=float时设置A

A = np.array([[eps, 1, 0], [1, 0, 0], [0, 1, 1]], dtype=float)

分配失败的原因是因为您将浮点数分配给整数数组。

正如您所注意到的那样,将整数分配给整数切片可以正常工作。