例如,我正在尝试计算三个列表
M =[[3, 0, 2, -8, -8], [5, 3, 2, 2, 3], [2, 5, 2, 1, 4]]
我想先对列表中的每个第一个值求和 x=3+5+2
所有列表中的其余值将它们加在一起作为 y
最后 x-y 的绝对值差为 10 - 8
再次对列表中的前两个值求和 x=3+5+2+0+3+5
所有列表中的其余值将它们加在一起作为 y
最后 x-y 的绝对值差为 18 - 0
同样的过程直到列表中的最后一个值
最后如果difference是最小存储值,则将最小值设置为difference,将最小索引设置为index,最后返回取最小值找到的切片
对于此示例,找到的切片是 list1=[3,5,2] list2=[0,2,-8,-8,3,2,2,3,2,5,2,1, 4]
我手动计算了它,但我无法实现它
def Vertical_UpperMatrix(M):
ds=range(5)
diffList = [(abs(sum(ds[:i]) - sum(ds[i:]))) for i in range(3)]
return diffList.index(min(diffList))
M=[[3, 0, 2, -8, -8], [5, 3, 2, 2, 3], [2, 5, 2, 1, 4]]
请您参考如下方法:
我在美国东部时间,所以在写这个答案的时候是凌晨 2 点 40 分。但我抽时间来回答,基本上是为了返回你愿意改进的意愿。
我们将使用一个名为 numpy
的库。如果你的机器上没有 numpy
,请谷歌搜索如何在你的操作系统上安装它。这对您以后的职业生涯很重要,您会明白为什么。
首先,创建您的 numpy
数组:
>>> import numpy as np
>>> l = np.array([[3, 0, 2, -8, -8], [5, 3, 2, 2, 3], [2, 5, 2, 1, 4]])
>>> l
array([[ 3, 0, 2, -8, -8],
[ 5, 3, 2, 2, 3],
[ 2, 5, 2, 1, 4]])
现在您可以访问第一列
>>> l[:, 0]
array([3, 5, 2])
第一行可以访问
>>> l[0, :]
array([ 3, 0, 2, -8, -8])
第一行从第二个元素到第四个元素由
>>> l[0, 1:4]
array([ 0, 2, -8])
基于以上所有特性,你想要的目标函数基本是这样的:
>>> d = 1
>>> np.abs(np.sum(l[:, 0:d]) - np.sum(l[:, d:]))
2
d
是您的划分指数。现在您可以在 for 循环中迭代 d
。
如果您打算使用 Python
继续您的职业生涯,我建议您至少了解 numpy
和 scipy
。