2D数组减1D数组

时间:2019-07-17 14:24:38

标签: python arrays numpy

在python numpy中:

A = [[1,2,3],[4,5,6],[7,8,9]]
b = [2,3,5]

[1,2,3] -2, [4,5,6]-3, [7,8,9] -5

例如理想的结果:

[[-1,0,1],[1,2,3],[2,3,4]]

有没有办法解决这个问题而没有循环?

3 个答案:

答案 0 :(得分:1)

您根本没有使用过Numpy。这很容易。您需要使用无或numpy.newaxis向b添加一个额外的维度,然后减去。

import numpy
A = numpy.array([[1,2,3],[4,5,6],[7,8,9]])
b = numpy.array([2,3,5])

c= A-b[:,None]

print(c)

输出:

[[-1  0  1]
 [ 1  2  3]
 [ 2  3  4]]

答案 1 :(得分:0)

for i in range(0, len(A)):
    cur_arr = A[i]
    for j in range(0, len(cur_arr)):
        cur_arr[j] = cur_arr[j] - B[j]

答案 2 :(得分:0)

使用纯python,您将需要在某处进行for循环。

A_L = [[1,2,3],[4,5,6],[7,8,9]]
B_L = [2,3,5]

sub = lambda a, b : [[x - B for x in A] for A, B in zip(a,b)]

c = sub(A_L,B_L)
print(c)

输出: [[-1, 0, 1], [1, 2, 3], [2, 3, 4]]