如何用除零(Python,numpy)以外的其他数组的所有数字替换数组的所有数字?

时间:2018-09-13 13:15:23

标签: python arrays numpy

我有两个这样的数组:

a = [[1,2,-3],[4,5,-6],[7,8,9]]
b = [[2,-5,0],[0,4,8],[-2,1,0]]

每个数字“ a”都应替换为“ b”中的一个,但“ b”的数量为0的除外:

result = [[2,-5,-3],[4,4,8],[-2,1,9]]

我当前的解决方案花费的时间太长:

for row in range(len(b)):
    for column in range(len(b[row])):
        if b[row][column] != 0 or b[row][column] != -0:
            a[row][column] = b[row][column]

顺便说一句。 “ b [row] [column]!= -0”是否必要?由于b中有时有“ 0”,有时有“ -0”。

有没有快速的方法? 谢谢。

2 个答案:

答案 0 :(得分:3)

只需使用np.where()

a = np.array(a)
b = np.array(b)
a = np.where(b == 0, a, b)

如果您想花哨并节省内存,请使用np.place()

np.place(a, b != 0, b[b != 0])

编辑:由于0 == -0评估True,因此您不需要任何其他检查

答案 1 :(得分:0)

一种可能性:

a[np.where(b !=0)] = b[np.where(b !=0)]