我想计算2D numpy数组的总和,但不包括一个索引位置,例如数组:
array([[0., 1., 1., 0., 1.],
[0., 0., 0., 0., 0.],
[1., 8., 1., 0., 1.],
[1., 1., 0., 1., 1.],
[0., 0., 0., 1., 1.]])
当我想排除[2][1]的位置时,结果将是12。我的for循环函数工作:
def num_order(arr):
tot = 0
for row in range(len(arr)):
for col in range(len(arr)):
if row != exclude_x or col != exclude_y:
tot += base[row][col]
return tot
但我需要更简洁的方式来表达
2条答案
按热度按时间kzmpq1sx1#
我认为最快的方法是将它们全部相加,然后减去该特定值:
为什么这样会快很多?许多
numpy
方法都是用C实现的,并利用了向量化技术。因此,使用这些函数而不是使用pythonfor
循环迭代所能做的一切都要快得多。fdx2calv2#
也许你可以把所有的东西加起来,然后减去你不想要的元素