如何解决用于列表理解的嵌套循环
我必须将嵌套循环转换为列表理解:
H = cvxopt.matrix(0.0,(rows,rows),tc='d')
for i in range(rows):
for j in range(rows):
H[i,j] = t[i] * t[j] * kf(X[i],X[j],param)
我已经试过了:
H = [t[i] * t[j] * kf(X[i],param) for H[i,j] in H]
解决方法
您不能完全从列表推导式中构建矩阵,只能使用 list
s。那只是因为 Python 没有内置矩阵类型。
您可以构建下一个最好的东西,list
的 list
。例如
>>> [[i + 3 * j for i in range(N)] for j in range(N)]
[[0,1,2],[3,4,5],[6,7,8]]
然后您可以使用 cvxopt.matrix
构造函数转换为 matrix
。
H = cvxopt.matrix([[i + 3 * j for i in range(N)] for j in range(N)])
在您的示例中,t
被定义在某处(问题中未包含),您可以这样做:
H = cvxopt.matrix([[t[i] * t[j] * kf(X[i],X[j],param) for i in range(rows)] for j in range(rows)])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。