找到向量或列中第二个(第三个)最高/最低值的索引的最快方法?
即什么
sort(x,partial=n-1)[n-1]
Run Code Online (Sandbox Code Playgroud)
是的
max()
Run Code Online (Sandbox Code Playgroud)
但对于
which.max()
Run Code Online (Sandbox Code Playgroud)
最好,
我有这个独立的C++代码,我试图将其包装在R包中.
我的问题是我绝对希望它与-O3
标志一起编译
.
所以在src/Makevars
我放的文件中:
PKG_CPPFLAGS = -I../inst/include
PKG_CXXFLAGS = -O3
CXX_STD = CXX11
Run Code Online (Sandbox Code Playgroud)
当我在我的机器上安装包装时,我看到:
g++ -std=c++0x -I/usr/share/R/include -DNDEBUG -I../inst/include -O3 -fpic -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c mycppfunctions.cpp -o mycppfunctions.o
g++ -std=c++0x -shared -Wl,-Bsymbolic-functions -Wl,-z,relro -o mycppfunctions.so mycppfunctions.o -L/usr/lib/R/lib -lR
Run Code Online (Sandbox Code Playgroud)
(可怕的-O2
旗帜出现在右边)
所以我的问题是:如何覆盖g++
调用时使用的cpp标志R CMD
?
最近,在另一个包中,我找到了一种方法来为F77代码(也在R包中)做类似的事情.基本上,通过将此添加到Makevars
:
PKG_FFLAGS = $(FPICFLAGS) $(SHLIB_FFLAGS)
all: $(SHLIB)
otherf77foo.o: otherf77foo.f
$(F77) $(PGK_FFLAGS) -O3 -pipe -g -c -o otherf77foo.o otherf77foo.f …
Run Code Online (Sandbox Code Playgroud) 考虑从包派生的这个数据类pydantic
:
from typing import List
from pydantic import BaseModel
class Bucket(BaseModel):
setting: List[str]
fight_1: List[int]
cause_1: List[str]
Run Code Online (Sandbox Code Playgroud)
让my_bucket
成为 的一个实例Bucket
:
my_bucket = Bucket(setting=['some_value'], fight_1=[0], cause_1=['other_value'])
Run Code Online (Sandbox Code Playgroud)
基本上我希望能够做到
my_bucket['setting']
Run Code Online (Sandbox Code Playgroud)
然后返回['some_value']
,但我得到:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-18-cacbdc1698e9> in <module>
----> 1 my_bucket['setting']
TypeError: 'Bucket' object is not subscriptable
Run Code Online (Sandbox Code Playgroud) 我有一个foo
消耗大量内存的功能,我希望并行运行几个实例.
假设我有一个带有4个物理内核的CPU,每个内核都有两个逻辑内核.
我的系统有足够的内存来容纳4个foo
并行实例,但不是8个.而且,由于这8个内核中有4个是逻辑的,所以我也不希望使用所有8个内核可以提供超出使用4个物理内核的大量增益只要.
所以,我想运行foo
在4个物理内核只.换句话说,我想确保执行multiprocessing.Pool(4)
(4是由于内存限制而在此计算机上可以容纳的函数的最大并发运行次数)将作业调度到四个物理内核(例如,不是两个物理核心及其两个逻辑后代的组合.
如何在python中做到这一点?
我之前使用过代码示例,multiprocessing
但我与库无关,所以为了避免混淆,我删除了它.
我正在尝试使用Eigen库学习C++.
int main(){
MatrixXf m = MatrixXf::Random(30,3);
cout << "Here is the matrix m:\n" << m << endl;
cout << "m" << endl << colm(m) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何导出m
到文本文件(我搜索过文档但没有找到写入功能)?
R
的memory.size()
仅仅是一个窗口.对于其他功能(例如windows()
),帮助页面提供指向非Windows对应项的指针.但是因为memory.size()
我找不到这样的指针.所以这是我的问题:是否有一个函数可以做同样memory.size()
但在linux中?
我正在尝试Eigen
VectorXf
x
按升序排序.
这按降序排序:
std::sort(x.data(),x.data()+x.size());
Run Code Online (Sandbox Code Playgroud)
这不起作用:
bool myfunction (int i,int j) { return (i<j); }
std::sort(x.data(),x.data()+x.size(),myfunction);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我试图想出一个快速算法计算量b[i]= med |y_i+y_j|, 1<=j!=i<=n
时,y_1,...,y_n
已经排序(所以b[]
是相同长度的向量y[]
).我将假设所有元素y[]
都是唯一的,并且n是偶数.
所以,下面的代码计算了b[i]
天真的(O(n**2)
)方式:(为方便起见,我在R中写了这个,但我是语言不可知的)
n<-30
a_fast<-b_slow<-rep(NA,n)
y<-sort(rnorm(n,100,1))
z<-y
for(i in 1:n){
b_slow[i]<-median(abs(y[-i]+y[i]))
}
Run Code Online (Sandbox Code Playgroud)
我有一个暂定的建议 - 下面 - 为了做到这一点O(n)
.但只有y[]
包含正数才有效.
我的问题是:当y[]
包含正数和负数时,我应该如何更改快速算法?这甚至可能吗?
以及(暂定)O(n)
方式下面的代码(为方便起见,我在R中写了这个代码,但我是语言不可知的)
tryA<-floor(1+(n-1)/2+1)
tryB<-floor(1+(n-1)/2)
medA<-y[tryA]
medB<-y[tryB]
for(i in 1:(tryA-1)){
a_fast[i]<-medA+y[i]
}
for(i in tryA:n){
a_fast[i]<-medB+y[i]
}
Run Code Online (Sandbox Code Playgroud)
简单,说明性的例子.如果我们有一个长度为4的向量
-3, -1, 2, 4
Run Code Online (Sandbox Code Playgroud)
然后,例如对于i = 1,3个绝对成对和是
4 1 1
Run Code Online (Sandbox Code Playgroud)
他们的中位数是1.
然后,例如对于i = 2,3个绝对成对和是
4 1 3
Run Code Online (Sandbox Code Playgroud)
他们的中位数是3.
这是一个有正面和负面的较长的例子y[] …
我是一个私人 github 仓库的管理员。从今天早上开始,当我尝试克隆该 repo 时,我得到:
git clone https://github.com/myblabla/blabla.git
Cloning into 'blabla'...
Missing or invalid credentials.
Error: connect ENOENT /run/user/1000/vscode-git-fa9d1b661a.sock
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1056:14) {
errno: 'ENOENT',
code: 'ENOENT',
syscall: 'connect',
address: '/run/user/1000/vscode-git-fa9d1b661a.sock'
}
Missing or invalid credentials.
Error: connect ENOENT /run/user/1000/vscode-git-fa9d1b661a.sock
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1056:14) {
errno: 'ENOENT',
code: 'ENOENT',
syscall: 'connect',
address: '/run/user/1000/vscode-git-fa9d1b661a.sock'
}
remote: Repository not found.
fatal: Authentication failed for
Run Code Online (Sandbox Code Playgroud)
我以前从来没有过。有什么解决办法?
当我做:
ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)
我得到:
git@github.com: Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud) 有点奇怪:
我正在尝试将矩阵的整行设置为0,并且eigen中的四个明显构造都不会编译:
//U is a p by p matrix. I wanna set its last column to 0.0f
U=solved.eigenvectors();
U.row(p-1).array()=0; //don't compile
U.row(p-1).setZero(1,p); //don't compile
U.row(p-1).array().setZero(p); //don't compile
U.bottomRows(1).setZero(p); //don't compile
Run Code Online (Sandbox Code Playgroud)
我还尝试了这些主题的其他变体,但都没有通过编译器