我正在尝试计算三个列表,例如
M =[[3, 0, 2, -8, -8], [5, 3, 2, 2, 3], [2, 5, 2, 1, 4]]
我想首先对列表x=3+5+2
并且所有列表中的其余值将它们一起添加为y
最后是difference of absolute value of x-y which is 10 - 8
并再次对列表x=3+5+2+0+3+5
并且所有列表中的其余值将它们一起添加为y
最后是difference of absolute value of x-y which is 18 - 0
再次执行相同的过程,直到列表中的最后一个值
最后如果差异是最小存储值,则将最小值设置为差值,将最小索引设置为索引,最后通过获取最小值返回找到的切片
对于此示例,找到的切片是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]]
答案 0 :(得分:1)
我在EST时区,所以在写这个答案时,它是凌晨2:40。但我花时间回答,基本上是为了回报你的改善意愿。
我们将使用名为numpy
的库。如果您的计算机上没有numpy
,请Google搜索如何在您的操作系统上安装它。这对你的职业生涯很重要,你会明白为什么。
首先,创建您的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
。
如果您打算使用numpy
继续职业,我建议您至少了解scipy
和Python
。