我想做的是从其他2d数组的行中减去1d数组。 我发现,在某些情况下,结果是错误的,让我困惑。下面的代码工作得很好
lst1 = [[10,11,12,13,14], [20,21,22,23,24], [30,31,32,33,34]]
lstave = [10,20,30,40,50]
# lstave = [0.1,0.2,0.3,0.4,0.5] # <- This is also no problem.
# transform them to nparray.
arr1 = np.array(lst1).reshape(3,5)
arrave = np.array(lstave)
for i in range(len(lst1)):
print(arr1[i] - arrave)
# print(np.subtract(arr1[i], arrave)) # <- This is also work
然后,我得到了如下预期
[ 0 -9 -18 -27 -36]
[ 10 1 -8 -17 -26]
[ 20 11 2 -7 -16]
但是,当我将数组“lstave”更改为[1,2,3,4,5]并进行减法时
lst1 = [[10,11,12,13,14], [20,21,22,23,24], [30,31,32,33,34]]
lstave = [1,2,3,4,5]
arr1 = np.array(lst1).reshape(3,5)
arrave = np.array(lstave)
for i in range(len(lst1)):
print(arr1[i] - arrave)
我被跟踪了
[9 9 9 9 9]
[19 19 19 19 19]
[29 29 29 29 29]
我不明白为什么只有第一元素减法执行了5次。 我觉得广播的工作方式不对,但我不知道如何解决这个问题。 有人能帮我吗? 谢谢,
它确实有效,只是:
给出:
但是:
还提供:
这更像是一道数学题
将提供:
所以你的代码是有效的
如果将
arrave
设为:所有的最终值都是
10
相关问题 更多 >
编程相关推荐