小编shi*_*shu的帖子

Python argparse:我如何单独获取参数组的Namespace对象?

我有一些按组分类的命令行参数如下:

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)

谢谢!

python argparse

11
推荐指数
2
解决办法
1575
查看次数

VIM:如何从与已打开文件相同的位置打开另一个文件

假设我在我的主目录中.我打开一个存在于一些深层嵌套目录结构中的文件:

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时,我只是使用那些内部变量?

vim

8
推荐指数
1
解决办法
1333
查看次数

做功能选择,PCA和规范化的正确顺序?

我知道功能选择可以帮助我删除可能贡献较少的功能.我知道PCA有助于将可能相关的特征减少为一个,从而减小尺寸.我知道规范化将特征转换为相同的比例.

但有没有建议的订单来做这三个步骤?从逻辑上讲,我认为我应首先通过特征选择来清除不良特征,然后对它们进行标准化,最后使用PCA来减小尺寸并使特征尽可能彼此独立.

这个逻辑是否正确?

奖金问题 - 在将特征提供给估算器之前,是否还有其他事情要做(预处理或转换)?

machine-learning scikit-learn

8
推荐指数
2
解决办法
3224
查看次数

熊猫-从列中获取唯一值以及行索引的出现位置

我的数据框有一个字符串列,其中可以包含长字符串。我想获得一个唯一字符串的列表,以及每个包含行索引的唯一字符串的列表。

我可以想到两种方法。

  1. 首先使用获取唯一列表.unique(),然后遍历数据框以建立索引列表,其中每个唯一值都将显示
  2. 使用.groupBy()创建组,并得到行索引名单每组

但是我不确定哪一种效率更高(或者是否还有其他方法可以更有效地做到这一点)。我考虑效率的原因是,我要唯一化的字段和groupBy是一个可能包含长字符串的字符串字段!

谢谢!

python pandas

6
推荐指数
1
解决办法
1773
查看次数

正则表达式 - 用句点替换行开头的所有空格

如果我通过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中加载它(由空格分隔),并且仍然可以查看第一列的层次结构!

我尝试了很多东西,但最终失去了层次结构信息

python regex vim awk sed

6
推荐指数
2
解决办法
637
查看次数

Perl YAML 到 JSON

我想要做的应该非常简单明了。

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 的引用

我究竟做错了什么?

perl json yaml

3
推荐指数
2
解决办法
1685
查看次数

Python dict get 函数没有做正确的事情?

我认为该.get(key, default=?)函数default仅在key不在 dict 中时才会查看该部分。

我想要做的是,查看我的主字典中是否存在一个键,如果不存在,查看它是否存在于备份字典中,如果它既不在主字典中也不在备份字典中,则引发 KeyError。

所以,把上面的英文语句直接翻译成 Python,我写道: val = mainDict.get(key, backupDict[key])

这样,如果mainDict没有key,它会去查backupDict,提高异常,如果它不存在任何,因为我没有使用getbackupDict查找。

正在发生的事情是,即使检查是否之前mainDictkey或没有,Python是提高例外,它是不是在backupDict。是的,它不在那里,因为它在那里mainDict!!

为什么会这样?

python dictionary

3
推荐指数
1
解决办法
253
查看次数

在另一个脚本中重用perl脚本中的sub

我有两个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然后加载它?

perl

3
推荐指数
1
解决办法
114
查看次数

数据库中的结果分页如何工作?

这是一个普遍的问题,适用于MySQL,Oracle DB或其他可能存在的问题。

我知道对于MySQL有LIMIT offset,size; 对于Oracle,有“ ROW_NUMBER”或类似名称。

但是,当这样的“分页”查询被背靠背调用时,数据库引擎是否真的重新进行整个“选择”,然后每次都检索不同的结果子集?还是只对结果进行一次整体提取,是否将结果保存在内存中,然后再根据偏移量和大小将结果的子集提供给后续查询?

如果它每次都执行完整提取,那么它似乎效率很低。

如果它仅执行一次全读取,则它必须以某种方式“存储”查询,以便下次查询进入时,它知道它已经获取了所有数据,只需要从中提取下一页即可。在这种情况下,数据库引擎将如何处理多个线程?两个线程执行相同的查询?

我很迷茫 :(

mysql database oracle paging pagination

3
推荐指数
2
解决办法
286
查看次数

在TCL中的字典中创建字典列表

我被迫使用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)

我究竟做错了什么?

json dictionary tcl

2
推荐指数
1
解决办法
4702
查看次数

如何使用花括号使vim理解环境变量

我经常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.

vim

2
推荐指数
1
解决办法
620
查看次数

sklearn - 如何检索 PCA 组件并解释传递给 GridSearchCV 的管道内部的方差

我将 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 详细信息?我怀疑它会和上面一样。

python pipeline scikit-learn grid-search

2
推荐指数
1
解决办法
2273
查看次数

Python:在字符串中匹配自定义日期格式

我有一个像这样的字符串:

>>> 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)

我究竟做错了什么?

python datetime date

2
推荐指数
1
解决办法
34
查看次数