我正在python gurobi中编写一个线性程序,我试图创建一些约束,只包括两个列表的元素的乘法,但不包括零。更具体地说:A是仅包含正元素或零元素的列表,B是具有二进制变量的列表,其展示A列表中存在零的位置,例如: A = [1,2,0,3,0] B = [1,1,0,1,0]
我想添加一些约束,包括只包含A [x] * B [x]而不是零。
任何人都知道如何做到这一点?
答案 0 :(得分:3)
这将完成这项工作:
import numpy as np
A=np.array([1,2,0,3,0])
B=np.array([1,1,0,1,0])
C=A[B>0]
C
为array([1, 2, 3])
此外,与@ Jean-FrançoisFabre所建议的相似,你可以做到
import numpy as np
A=np.array([1,2,0,3,0])
C=A[A!=0]
答案 1 :(得分:0)
如果你只想从列表中删除0,你可以这样做:
A=[1,2,3,0,4,3,0,0,0,1]
C=[i for i in A if i!=0]
输出:
C=[1,2,3,4,3,1]
答案 2 :(得分:0)
这样可行。
A = [1, 2, 0, 3, 0]
B = [1, 1, 0, 1, 0]
mul = [a*b for a,b in zip(A,B) if a != 0 and b !=0]
print mul