小编rkj*_*983的帖子

检查变量是否为None或numpy.array时的ValueError

我想检查变量是否为None或numpy.array.我已经实现check_a了这样做的功能.

def check_a(a):
    if not a:
        print "please initialize a"

a = None
check_a(a)
a = np.array([1,2])
check_a(a)
Run Code Online (Sandbox Code Playgroud)

但是,这段代码引发了ValueError.什么是直接的方式?

ValueError                                Traceback (most recent call last)
<ipython-input-41-0201c81c185e> in <module>()
      6 check_a(a)
      7 a = np.array([1,2])
----> 8 check_a(a)

<ipython-input-41-0201c81c185e> in check_a(a)
      1 def check_a(a):
----> 2     if not a:
      3         print "please initialize a"
      4 
      5 a = None

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Run Code Online (Sandbox Code Playgroud)

python numpy is-empty

88
推荐指数
1
解决办法
7万
查看次数

高效地计算python中的单词频率

我想计算文本文件中所有单词的频率.

>>> countInFile('test.txt')
Run Code Online (Sandbox Code Playgroud)

{'aaa':1, 'bbb': 2, 'ccc':1}如果目标文本文件如下,则应返回:

# test.txt
aaa bbb ccc
bbb
Run Code Online (Sandbox Code Playgroud)

我在一些帖子之后用纯python实现了它.但是,由于文件大小(> 1GB),我发现纯python方式不足.

我认为借用sklearn的力量是一个候选人.

如果你让CountVectorizer计算每一行的频率,我猜你会通过总结每一列来获得字频率.但是,这听起来有点间接的方式.

使用python计算文件中单词的最有效和直接的方法是什么?

更新

我的(非常慢)代码在这里:

from collections import Counter

def get_term_frequency_in_file(source_file_path):
    wordcount = {}
    with open(source_file_path) as f:
        for line in f:
            line = line.lower().translate(None, string.punctuation)
            this_wordcount = Counter(line.split())
            wordcount = add_merge_two_dict(wordcount, this_wordcount)
    return wordcount

def add_merge_two_dict(x, y):
    return { k: x.get(k, 0) + y.get(k, 0) for k in set(x) | set(y) }
Run Code Online (Sandbox Code Playgroud)

python nlp word-count frequency-distribution scikit-learn

31
推荐指数
2
解决办法
2万
查看次数

IntelliJ:求值lambda表达式在调试时引发编译错误

我想用Intellij"评估代码片段"功能评估包括lambda表达式的代码.但随后,Intellij提出了一个错误Unable to compile for target level 1.8. Need to run IDEA on java version at least 1.8, currently running on 1.6.0_65-b14-462-11M4609

评估代码非常简单,如下所示.

Set<Integer> set = new HashSet<>();
set.add(1);
set.stream().map(v->v).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

我的Intellij版本是14.0.3,根据官方文档,版本14支持lambda表达式评估.

该功能如何可用?

在此输入图像描述

lambda intellij-idea

12
推荐指数
1
解决办法
9047
查看次数

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

numpy/pandas矩阵乘法的多线程?

我真的想知道如何在numpy/pandas上利用多核处理进行矩阵乘法.

我在想的是:

M = pd.DataFrame(...) # super high dimensional square matrix.
A = M.T.dot(M) 
Run Code Online (Sandbox Code Playgroud)

由于产品数量众多,这需要大量的处理时间,我认为使用多线程进行巨大的矩阵乘法是很简单的.所以,我在谷歌搜索,但我找不到如何在numpy/pandas上做到这一点.我是否需要使用一些python内置线程库手动编写多线程代码?

python multithreading numpy matrix pandas

9
推荐指数
1
解决办法
4539
查看次数

pandas.DataFrame可以有列表类型列吗?

是否可以创建包含列表类型字段的pandas.DataFrame?

例如,我想将以下csv加载到pandas.DataFrame:

id,scores
1,"[1,2,3,4]"
2,"[1,2]"
3,"[0,2,4]"
Run Code Online (Sandbox Code Playgroud)

python pandas

9
推荐指数
2
解决办法
4275
查看次数

Indexing是否会使Pandas数据帧更快?

我有一个拥有超过百万条记录的pandas数据框.其中一列是datetime.我的数据样本如下:

time,x,y,z
2015-05-01 10:00:00,111,222,333
2015-05-01 10:00:03,112,223,334
...
Run Code Online (Sandbox Code Playgroud)

我需要在特定时期内有效地获取记录.以下天真的方式非常耗时.

new_df = df[(df["time"] > start_time) & (df["time"] < end_time)]
Run Code Online (Sandbox Code Playgroud)

我知道在像MySQL这样的DBMS上,时间字段的索引通过指定时间段来获取记录是有效的.

我的问题是

  1. 大熊猫的索引是否df.index = df.time会使切片过程更快?
  2. 如果Q1的答案为"否",那么在大熊猫的特定时间段内获得记录的常用有效方法是什么?

python pandas

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

使用mac上的"default writes"命令无法更改R语言设置

我是一名mac用户,想要将R语言环境改为英语.

我知道defaults write应该在osx上设置R的语言环境.但是,奇怪的是,命令不起作用.

defaults write org.R-project.R force.LANG en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

当我通过执行R.app启动R时,正确显示英文消息,但Terminal.app显示日语消息:

R.app Terminal.app

我的环境如下:

  • Mac OS 10.8.5
  • R版本3.0.1(2013-05-16) - "好运动"平台:x86_64-apple-darwin10.8.0(64位)

sessionInfo()终端的结果:

> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
Run Code Online (Sandbox Code Playgroud)

在R.app上:

R version 3.0.1 (2013-05-16)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base    

loaded via a namespace (and not attached):
[1] caret_5.17-7    grid_3.0.1      kernlab_0.9-18  lattice_0.20-15
Run Code Online (Sandbox Code Playgroud)

macos locale r

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

合并 pandas.DataFrame 上的每两列

我想每两列使用 pandas.DataFrame 。

例如,我有以下数据框:

pd.DataFrame([[10,"5%", 20, "10%"],[30,"15%", 40,"20%"]], columns=['error1', '(%)', 'error2', '(%)'])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然后,我想要得到的是以下数据框:

pd.DataFrame([["10 (5%)", "20 (10%)"],["30 (15%)", "40 (20%)"]], columns=['error1 (%)', 'error2 (%)'])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python pandas

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

连接pandas DataFrame上的散点图线

我想在熊猫绘制的散点图的点之间添加线。我试过这个,但不起作用。我可以在散点图上放线吗?

pd.DataFrame([[1,2],[10,20]]).plot(kind="scatter", x=0, y=1, style="-")
pd.DataFrame([[1,2],[10,20]]).plot.scatter(0,1,style="-")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

python matplotlib pandas

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