让我用一个简单的例子来阐述我的问题.我有一个= [a1,a2,a3,a4],所有ai都是一个数值.
我想得到的是'a'中的成对比较,例如I(a1> = a2),I(a1> = a3),I(a1> = a4),,,,, I(a4> = a1) ,I(a4> = a2),I(a4> = a3),其中I是指标函数.所以我使用了以下代码.
res=[x>=y for x in a for y in a]
Run Code Online (Sandbox Code Playgroud)
但它也给出了比较结果,如I(a1> = a1),..,I(a4> = a4),它总是一个.为了摆脱这些麻烦,我将res转换为numpy数组并找到off对角元素.
res1=numpy.array(res)
Run Code Online (Sandbox Code Playgroud)
这给出了我想要的结果,但我认为应该有更有效或更简单的方法来进行成对比较并提取非对角线元素.你对此有什么想法吗?提前致谢.
对于这两个矩阵,我想找到矩阵X和Q行的乘积,并应用ifelse函数来查看产品是否大于零.
n1=1000, m=10000
X=cbind(rnorm(n1),rbinom(n1))
Q=matrix(rnorm(2*m), ncol=2)
Run Code Online (Sandbox Code Playgroud)
为此,我尝试了循环并应用以下功能.
D=10000
ind_beta=matrix(0,n1,D)
for (l in 1:D){
ind[,l]=as.vector(ifelse(X%*%Q[l,]>=0,1,0))
}
Run Code Online (Sandbox Code Playgroud)
和
ind=apply(Q,1,function(x){ifelse(X%*%Q>=0,1,0)})
Run Code Online (Sandbox Code Playgroud)
两个代码都给出了相同的结果,但实际上非常耗时.有没有办法让这个快?提前致谢.