在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]]
有没有办法解决这个问题而没有循环?
答案 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]]