我有一个NumPy r by c矩阵的零和一.我有一个c字列表.我想返回一个长度为r的列表,其中每个元素是一个以空格分隔的字符串,仅由那些与该矩阵行中的1匹配的单词组成.这是一个例子:
matrix=np.array([[0,0,1],[1,0,1],[0,1,1]])
words=['python','c++','.net']
output=[]
for row in range(matrix.shape[0]):
output.append( ' '.join([words[i] for i in range(matrix.shape[1]) if matrix[row,i]==1]))
Run Code Online (Sandbox Code Playgroud)
什么是Pythonic完成此任务的方法?
谢谢,
G
我有一个数据框,其中为每个 id 记录 1 个或多个事件。对于每个事件,都会记录 id、度量 x 和日期。像这样的东西:
import pandas as pd
import datetime as dt
import numpy as np
x = range(0, 6)
id = ['a', 'a', 'b', 'a', 'b', 'b']
dates = [dt.datetime(2012, 5, 2),dt.datetime(2012, 4, 2),dt.datetime(2012, 6, 2),
dt.datetime(2012, 7, 30),dt.datetime(2012, 4, 1),dt.datetime(2012, 5, 9)]
df =pd.DataFrame(np.column_stack((id,x,dates)), columns = ['id', 'x', 'dates'])
Run Code Online (Sandbox Code Playgroud)
我希望能够设置回溯期(即 70 天),并为数据集中的每一行计算该 id 的任何先前事件的 x 累积总和以及所需的回溯(不包括该行的 x)正在执行计算)。最终应该看起来像:
id x dates want
0 a 0 2012-05-02 00:00:00 1
1 a 1 2012-04-02 00:00:00 0
2 …Run Code Online (Sandbox Code Playgroud) 可能有一个版本的tcrossprod实现了这一点,但我无法找到它.从下面的示例中,如果订单无关紧要,如何只获得第一次出现组合的行?即I(1,2)对我来说与(2,1)相同.
a <- c(1,2,3,4)
b <- c(10,5,4,10)
df<- data.frame(a,b)
melt(tcrossprod(df$b,1/df$b))
> melt(tcrossprod(df$b,1/df$b))
Var1 Var2 value
1 1 1 1.00
2 2 1 0.50
3 3 1 0.40
4 4 1 1.00
5 1 2 2.00
6 2 2 1.00
7 3 2 0.80
8 4 2 2.00
9 1 3 2.50
10 2 3 1.25
11 3 3 1.00
12 4 3 2.50
13 1 4 1.00
14 2 4 0.50
15 3 4 0.40
16 4 4 1.00
Run Code Online (Sandbox Code Playgroud) 我使用Spyder作为我的Python IDE.在我所做的大部分工作中,我使用编辑器编写代码并一次执行一部分程序.我通常来回走动,改变事物,添加碎片,执行部分......你得到它.有没有办法在执行每段代码后保存Spyder在IDE控制台部分显示的文件?
我有一个pandas数据框,其中包含一系列文档的单词数.我可以申请sklearn.feature_extraction.text.TfidfVectorizer退回一个期限 - 文件矩阵吗?
import pandas as pd
a = [1,2,3,4]
b = [1,3,4,6]
c = [3,4,6,1]
df = pd.DataFrame([a,b,c])
Run Code Online (Sandbox Code Playgroud)
如何在df中获得tfidf版本的计数?
在我提到的这个问题中,我可以使用多处理成功运行作业,我可以看到所有处理器都在使用中.我该如何解雇这份工作?从终端我运行:
python my_multiprocessor_script.py
Run Code Online (Sandbox Code Playgroud)
然后我打Ctrl+C了杀.
然而,这项工作似乎没有被杀死,我可以看到所有的处理器仍在使用中.我正在运行Red Hat Enterprise Linux Server 6.6版.
我正在使用WordCloud包来显示由scikit LDA(潜在狄利克雷分配)生成的单词。对于 LDA 生成的每个主题,我都会有一个图表。我希望能够在网格中绘制所有图表以允许并排可视化。本质上,我有一个函数将 LDA 模型作为输入,以及我想要可视化的 LDA 主题,然后绘制一个 wordcloud:
from wordcloud import WordCloud
import matplotlib.pyplot as plt
SEED=0
def topicWordCloud(model, topicNumber, WCmaxWords,WCwidth, WCheight):
topic = model.components_[topicNumber]
tupleList = [(tf_feature_names[i],int(topic[i]/topic.sum()*10000)) for i in range(len(topic))]
wordcloud = WordCloud(width=WCwidth, height=WCheight, max_words=WCmaxWords, random_state=42).generate_from_frequencies(tupleList)
plt.figure( figsize=(20,10) )
plt.imshow(wordcloud)
plt.axis("off")
topicWordCloud(model=lda, topicNumber=2, WCmaxWords=100,WCwidth=800, WCheight=600)
Run Code Online (Sandbox Code Playgroud)
如何遍历我的所有主题 ( n_topics) 以在网格中可视化所有图表?我在想一些事情:
fig = plt.figure()
for i in range(n_topics):
plt.subplot(2,1,i+1)
#something here
Run Code Online (Sandbox Code Playgroud) 我没有看到Impala函数减去两个datestamps并返回两者之间的秒(或分钟).
http://www.cloudera.com/documentation/archive/impala/2-x/2-0-x/topics/impala_datetime_functions.html
我有一个 Hive 表,其中包含与每个文档关联的文本数据和一些元数据。看起来像这样。
from pyspark.ml.feature import Tokenizer
from pyspark.ml.feature import CountVectorizer
df = sc.parallelize([
("1", "doc_1", "fruit is good for you"),
("2", "doc_2", "you should eat fruit and veggies"),
("2", "doc_3", "kids eat fruit but not veggies")
]).toDF(["month","doc_id", "text"])
Run Code Online (Sandbox Code Playgroud)
+-----+------+--------------------+
|month|doc_id| text|
+-----+------+--------------------+
| 1| doc_1|fruit is good for...|
| 2| doc_2|you should eat fr...|
| 2| doc_3|kids eat fruit bu...|
+-----+------+--------------------+
Run Code Online (Sandbox Code Playgroud)
我想按月数字。到目前为止,我已经采用了 CountVectorizer 方法:
+-----+------+--------------------+
|month|doc_id| text|
+-----+------+--------------------+
| 1| doc_1|fruit is good for...|
| 2| doc_2|you should eat …Run Code Online (Sandbox Code Playgroud) 我有一个带有公制v和分类变量t的数据框.我可以将它们绘制成这样的线条
set.seed(42)
v <- runif(20, min=0, max=100)
t <- sample( LETTERS[1:2], 20, replace=TRUE )
df <- data.frame(v,t)
qplot(1:length(v),v,data=df,geom="line",group=t,color=t)
Run Code Online (Sandbox Code Playgroud)
我想在每条线上添加色带.可能有不同的宽度(我将用公式设置)和透明度.我试图用"功能区"替换geom但我收到以下错误:
qplot(1:length(v),v,data=df,geom="ribbon",group=t,color=t)
Error: geom_ribbon requires the following missing aesthetics: ymin, ymax
Run Code Online (Sandbox Code Playgroud)
如何在一个图表中绘制两条线和它们的色带?
python ×5
r ×2
anaconda ×1
apache-spark ×1
ggplot2 ×1
group-by ×1
hadoop ×1
hive ×1
ide ×1
impala ×1
lda ×1
linux ×1
logging ×1
matplotlib ×1
matrix ×1
melt ×1
nlp ×1
pandas ×1
pyspark ×1
python-2.7 ×1
redhat ×1
scikit-learn ×1
spyder ×1
sql ×1
string ×1
tf-idf ×1
time-series ×1
word-cloud ×1