我有一些按组分类的命令行参数如下:
cmdParser = argparse.ArgumentParser()
cmdParser.add_argument('mainArg')
groupOne = cmdParser.add_argument_group('group one')
groupOne.add_argument('-optA')
groupOne.add_argument('-optB')
groupTwo = cmdParser.add_argument_group('group two')
groupTwo.add_argument('-optC')
groupTwo.add_argument('-optD')
Run Code Online (Sandbox Code Playgroud)
我如何解析上面的内容,以便最终得到三个不同的Namespace对象?
global_args - containing all the arguments not part of any group
groupOne_args - containing all the arguments in groupOne
groupTwo_args - containing all the arguments in groupTwo
Run Code Online (Sandbox Code Playgroud)
谢谢!
假设我在我的主目录中.我打开一个存在于一些深层嵌套目录结构中的文件:
vim /some/really/long/path/file.txt
Run Code Online (Sandbox Code Playgroud)
现在,在vim中,我想从同一个长位置开始与另一个文件进行垂直拆分(但我不想将当前目录更改为该路径,我仍然想要在主目录中).
外行(像我一样)会做类似的事情:
:vsp /some/really/long/path/file2.txt
Run Code Online (Sandbox Code Playgroud)
但我想从你们所有的VIM天才那里找到,有更简单的方法吗?
同样,如果我有多个文件已经打开,驻留在不同的路径中,VIM可以自动为所有位置分配某种内部变量吗?然后当我想用其中一个位置的文件之一启动一个新的VSP或SP时,我只是使用那些内部变量?
我知道功能选择可以帮助我删除可能贡献较少的功能.我知道PCA有助于将可能相关的特征减少为一个,从而减小尺寸.我知道规范化将特征转换为相同的比例.
但有没有建议的订单来做这三个步骤?从逻辑上讲,我认为我应首先通过特征选择来清除不良特征,然后对它们进行标准化,最后使用PCA来减小尺寸并使特征尽可能彼此独立.
这个逻辑是否正确?
奖金问题 - 在将特征提供给估算器之前,是否还有其他事情要做(预处理或转换)?
我的数据框有一个字符串列,其中可以包含长字符串。我想获得一个唯一字符串的列表,以及每个包含行索引的唯一字符串的列表。
我可以想到两种方法。
.unique(),然后遍历数据框以建立索引列表,其中每个唯一值都将显示.groupBy()创建组,并得到行索引名单每组但是我不确定哪一种效率更高(或者是否还有其他方法可以更有效地做到这一点)。我考虑效率的原因是,我要唯一化的字段和groupBy是一个可能包含长字符串的字符串字段!
谢谢!
如果我通过vim,sed,awk,python等实现这一点我并不在意.我试过这一切,无法完成它.
对于这样的输入:
top f1 f2 f3
sub1 f1 f2 f3
sub2 f1 f2 f3
sub21 f1 f2 f3
sub3 f1 f2 f3
Run Code Online (Sandbox Code Playgroud)
我想要:
top f1 f2 f3
...sub1 f1 f2 f3
...sub2 f1 f2 f3
......sub21 f1 f2 f3
...sub3 f1 f2 f3
Run Code Online (Sandbox Code Playgroud)
然后我想在Excel中加载它(由空格分隔),并且仍然可以查看第一列的层次结构!
我尝试了很多东西,但最终失去了层次结构信息
我想要做的应该非常简单明了。
use JSON;
use YAML;
use Data::Dumper;
my $yaml_hash = YAML::LoadFile("data_file.yaml");
print ref($yaml_hash) # prints HASH as expected
print Dumper($yaml_hash) # correctly prints the hash
my $json_text = encode_json($yaml_hash);
Run Code Online (Sandbox Code Playgroud)
encode_json 错误说:
cannot encode reference to scalar 'SCALAR(0x100ab630)' unless the scalar is 0 or 1
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么 encode_json 认为 $yaml_hash 是对标量的引用,而实际上它是对 HASH 的引用
我究竟做错了什么?
我认为该.get(key, default=?)函数default仅在key不在 dict 中时才会查看该部分。
我想要做的是,查看我的主字典中是否存在一个键,如果不存在,查看它是否存在于备份字典中,如果它既不在主字典中也不在备份字典中,则引发 KeyError。
所以,把上面的英文语句直接翻译成 Python,我写道: val = mainDict.get(key, backupDict[key])
这样,如果mainDict没有key,它会去查backupDict,提高异常,如果它不存在任何,因为我没有使用get的backupDict查找。
正在发生的事情是,即使检查是否之前mainDict有key或没有,Python是提高例外,它是不是在backupDict。是的,它不在那里,因为它在那里mainDict!!
为什么会这样?
我有两个perl脚本.两者都没有"包"关键字或任何东西.我有一个sub(以及一些自由浮动代码)我想在另一个脚本中使用,而不需要在进程中运行自由浮动代码.
A.pl
sub my_sub {
# do something
}
# do something else
my_sub();
# do something else
Run Code Online (Sandbox Code Playgroud)
B.pl
require A.pl; # but load only the subs, don't run anything
my_sub();
Run Code Online (Sandbox Code Playgroud)
这是否可能,而不必在单独的.pm文件中分离出sub然后加载它?
这是一个普遍的问题,适用于MySQL,Oracle DB或其他可能存在的问题。
我知道对于MySQL有LIMIT offset,size; 对于Oracle,有“ ROW_NUMBER”或类似名称。
但是,当这样的“分页”查询被背靠背调用时,数据库引擎是否真的重新进行整个“选择”,然后每次都检索不同的结果子集?还是只对结果进行一次整体提取,是否将结果保存在内存中,然后再根据偏移量和大小将结果的子集提供给后续查询?
如果它每次都执行完整提取,那么它似乎效率很低。
如果它仅执行一次全读取,则它必须以某种方式“存储”查询,以便下次查询进入时,它知道它已经获取了所有数据,只需要从中提取下一页即可。在这种情况下,数据库引擎将如何处理多个线程?两个线程执行相同的查询?
我很迷茫 :(
我被迫使用TCL做某些事情,我需要创建一个json字符串,如下所示:
{ "mainKey": "mainValue", "subKey": [{"key1":"value1"},{"key2":"value2"}]}
Run Code Online (Sandbox Code Playgroud)
所以我想这样做:
set subDict1 [dict create key1 value1]
set subDict2 [dict create key2 value2]
set subDictList [list $subDict1 $subDict2]
set finalDict [dict create mainKey mainValue subKey $subDictList]
Run Code Online (Sandbox Code Playgroud)
当我将此字典转换为json时,我得到:
{"mainKey":"mainValue", "subKey":{"key1 value1":{"key2":"value2"}}}
Run Code Online (Sandbox Code Playgroud)
而不是必需的:
{ "mainKey": "mainValue", "subKey": [{"key1":"value1"},{"key2":"value2"}]}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我经常gf在vim中使用光标打开文件.这些文件路径通常使用环境变量.当使用没有花括号的环境变量时,vim可以毫不费力地理解它.但是当使用花括号时,vim无法使用环境变量值.
这适用于gf:
$tools/tools.json
Run Code Online (Sandbox Code Playgroud)
这不适用于gf:
${tools}/tools.json
Run Code Online (Sandbox Code Playgroud)
有没有办法让vim理解环境变量的花括号语法?仅供参考,我在Linux(SLES11SP3)上使用TCSH shell,Vim 8.0.
我将 GridSearchCV 与管道一起使用,如下所示:
grid = GridSearchCV(
Pipeline([
('reduce_dim', PCA()),
('classify', RandomForestClassifier(n_jobs = -1))
]),
param_grid=[
{
'reduce_dim__n_components': range(0.7,0.9,0.1),
'classify__n_estimators': range(10,50,5),
'classify__max_features': ['auto', 0.2],
'classify__min_samples_leaf': [40,50,60],
'classify__criterion': ['gini', 'entropy']
}
],
cv=5, scoring='f1')
grid.fit(X,y)
Run Code Online (Sandbox Code Playgroud)
我现在如何从模型中检索 PCA 详细信息(例如components和 )?explained_variancegrid.best_estimator_
此外,我还想best_estimator_使用 pickle 将其保存到文件中,然后加载它。如何从此加载的估算器中检索 PCA 详细信息?我怀疑它会和上面一样。
我有一个像这样的字符串:
>>> string = "bla_bla-whatever_2018.02.09_11.34.09_more_bla-123"
Run Code Online (Sandbox Code Playgroud)
我需要从中提取日期2018.02.09_11.34.09.它将始终采用这种格式.
所以我尝试过:
>>> match = re.search(r'\d{4}\.\d{2}\.\d{2}_\d{2}\.\d{2}\.\d{2}', string)
Run Code Online (Sandbox Code Playgroud)
它正确地从该字符串中提取出日期:
>>> match.group()
'2018.02.09_11.34.09'
Run Code Online (Sandbox Code Playgroud)
但是当我尝试从这个字符串创建一个datetime对象时,它不起作用:
>>> datetime.datetime.strptime(match.group(), '%Y.%m.%d_%H.%I.%S')
ValueError: time data '2018.02.09_11.34.09' does not match format '%Y.%m.%d_%H.%I.%S'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?