我有一个数据框.我们叫他bob:
> head(bob)
phenotype exclusion
GSM399350 3- 4- 8- 25- 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
GSM399351 3- 4- 8- 25- 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
GSM399352 3- 4- 8- 25- 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
GSM399353 3- 4- 8- 25+ 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
GSM399354 3- 4- 8- 25+ 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
GSM399355 3- 4- 8- 25+ 44+ 11b- 11c- 19- NK1.1- Gr1- TER119-
Run Code Online (Sandbox Code Playgroud)
我想连接这个数据框的行(这将是另一个问题).但看: …
好的我喜欢Python的zip()功能.一直使用它,它很棒.现在每一次我想要做的相反zip(),认为"我以前就知道该怎么做",然后谷歌蟒蛇解压缩,然后记住一个使用这个神奇的*解压缩元组的压缩列表.像这样:
x = [1,2,3]
y = [4,5,6]
zipped = zip(x,y)
unzipped_x, unzipped_y = zip(*zipped)
unzipped_x
Out[30]: (1, 2, 3)
unzipped_y
Out[31]: (4, 5, 6)
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?那个神奇的星号在做什么?还有什么地方可以应用,Python中其他令人惊叹的精彩内容是如此神秘且难以谷歌?
grep在R问题中,我有一个非常愚蠢的东西.道歉,因为这看起来应该很容易 - 我显然只是遗漏了一些东西.
我有一个字符串向量,让我们称之为alice.部分alice内容打印在下面:
T.8EFF.SP.OT1.D5.VSVOVA#4
T.8EFF.SP.OT1.D6.LISOVA#1
T.8EFF.SP.OT1.D6.LISOVA#2
T.8EFF.SP.OT1.D6.LISOVA#3
T.8EFF.SP.OT1.D6.VSVOVA#4
T.8EFF.SP.OT1.D8.VSVOVA#3
T.8EFF.SP.OT1.D8.VSVOVA#4
T.8MEM.SP#1
T.8MEM.SP#3
T.8MEM.SP.OT1.D106.VSVOVA#2
T.8MEM.SP.OT1.D45.LISOVA#1
T.8MEM.SP.OT1.D45.LISOVA#3
Run Code Online (Sandbox Code Playgroud)
我想grep给出我在其中一些字符串中出现的D之后的数字,条件是包含"LIS"的字符串和空字符串或其他东西.
我希望grep能够返回捕获组的值,而不是整个字符串.这是我的R风格的正则表达式:
pattern <- (?<=\\.D)([0-9]+)(?=.LIS)
Run Code Online (Sandbox Code Playgroud)
没什么太复杂的.但是为了得到我所追求的东西,而不是仅仅使用grep(pattern, alice, value = TRUE, perl = TRUE)我正在做的事情,这似乎很糟糕:
reg.out <- regexpr(
"(?<=\\.D)[0-9]+(?=.LIS)",
alice,
perl=TRUE
)
substr(alice,reg.out,reg.out + attr(reg.out,"match.length")-1)
Run Code Online (Sandbox Code Playgroud)
现在看它看起来似乎并不太难看,但是为了让这件完全无关紧要的工作变得麻烦,令人尴尬.任何关于如何妥善解决这个问题的指针?
加分指着我解释之间无论我访问的不同网页$,@和attr.
我在d3中进行切换,并试图避免全局变量.
我可以继续选择项目,就好像它已经在场景中一样:
d3.select('#awesome_line_graph')
Run Code Online (Sandbox Code Playgroud)
然后测试看我是否抓到任何东西
if (d3.select('#awesome_line_graph')[0].every(function(d){return d===null})){
// draw awesome line graph
} else {
d3.select('#awesome_line_graph').remove()
}
Run Code Online (Sandbox Code Playgroud)
但是对于第0个元素的测试可能不止一个空的东西看起来很可怕和hacky.我应该怎么做呢?不知道多少javascript的道歉.
在下文中,male_trips是一个大熊猫数据帧,而站是一个小熊猫数据帧.对于每个电台,我想知道有多少次男性旅行.以下工作,但需要很长时间:
mc = [ sum( male_trips['start_station_id'] == id ) for id in stations['id'] ]
Run Code Online (Sandbox Code Playgroud)
我应该怎么做呢?
更新!因此有两种主要方法:groupby()接下来size(),更简单.value_counts().我做得很快timeit,而且这种groupby方法获得了相当大的收益!这是代码:
from timeit import Timer
setup = "import pandas; male_trips=pandas.load('maletrips')"
a = "male_trips.start_station_id.value_counts()"
b = "male_trips.groupby('start_station_id').size()"
Timer(a,setup).timeit(100)
Timer(b,setup).timeit(100)
Run Code Online (Sandbox Code Playgroud)
这是结果:
In [4]: Timer(a,setup).timeit(100) # <- this is value_counts
Out[4]: 9.709594964981079
In [5]: Timer(b,setup).timeit(100) # <- this is groupby / size
Out[5]: 1.5574288368225098
Run Code Online (Sandbox Code Playgroud)
请注意,在此速度下,为了探索数据输入, value_counts会更快,更少记忆!
运行
np.log(math.factorial(21))
Run Code Online (Sandbox Code Playgroud)
抛出一个AttributeError: log.这是为什么?我可以想象一个ValueError,或某种UseYourHighSchoolMathsError,但为什么属性错误?
我正在尝试编写一个facet_wrap在多个页面上绘制ggplot 图的函数.这只是一个黑客,因为这个功能似乎在ggplot2功能待办事项列表中.我做了一些小的计算,找到了我需要的页数,我每页需要的行data.frame数等等.我非常有信心这一切都有效.
pdf(filename)
for (i in seq(num_pages)){
slice = seq(((i-1)*num_rows)+1,(i*num_rows))
slice = slice[!(slice > nrow(df.merged))]
df.segment=df.merged[slice,]
p <- ggplot(df.segment, aes(y=mean,x=phenotype))
p <- p + geom_bar(stat="identity",fill="white",colour="black")
p + facet_wrap("ID",scales="free_y",ncol=n_facets,nrow=n_facets)
}
dev.off()
Run Code Online (Sandbox Code Playgroud)
我的问题是,通过将它全部包含在这样的for循环中,在pdf()和dev.off()函数之间,是for循环似乎不等待ggplot来做它的事情,并且非常快速地通过它的循环并输出PDF无效.
如果我设置i = 1,启动pdf(),在for循环中运行上面的代码,然后设置i=2,然后运行代码,依此类推,直到我感到无聊(i=3)然后关闭设备,结果PDF很棒.
有没有办法在进入下一次迭代之前让for循环等待最后一行完成绘图?
我正在创建一个numpy数组,它将填充我所创建的特定类的对象.我想初始化数组,使它只包含该类的对象.例如,这是我想做的事情,如果我这样做会发生什么.
class Kernel:
pass
>>> L = np.empty(4,dtype=Kernel)
TypeError: data type not understood
Run Code Online (Sandbox Code Playgroud)
我可以做这个:
>>> L = np.empty(4,dtype=object)
Run Code Online (Sandbox Code Playgroud)
然后将每个元素分配L为一个Kernel对象(或任何其他类型的对象).Kernel但是,从编程的角度(类型检查)和数学的(对函数集的操作),我能够拥有一个s 数组是如此的巧妙.
有没有办法让我使用任意类指定numpy数组的数据类型?
我有很多行的形式
ko04062 ko:CXCR3
ko04062 ko:CX3CR1
ko04062 ko:CCL3
ko04062 ko:CCL5
ko04080 ko:GZMA
Run Code Online (Sandbox Code Playgroud)
并且非常希望摆脱右侧列的ko:位.我正在尝试使用sed,如下所示:
echo "ko05414 ko:ITGA4" | sed 's/\(^ko\d{5}\)\tko:\(.*$\)/\1\2/'
Run Code Online (Sandbox Code Playgroud)
它只是输出我回声的原始字符串.我是命令行脚本,sed,管道等新手,所以如果/当我做一些非常愚蠢的事情时,请不要太生气.
令我困惑的主要事情是,如果我将该\1\2位反转\2\1或仅使用一个组,则会发生同样的事情.我想,这意味着我遗漏了一些关于将echo输出管道输入到sed的机制,或者我的正则表达式错误或者我使用的是sed错误或者sed没有打印替换的结果.
任何帮助将不胜感激!
我有一个字符串向量.看看我的矢量,它是awesome:
> awesome
[1] "a" "b" "c" "d" "d" "e" "f" "f"
Run Code Online (Sandbox Code Playgroud)
我想创建一个长度相同的新向量,awesome但必要时,字符串已被唯一化.例如,我所需函数的有效输出将是
> awesome.uniqueified
[1] "a" "b" "c" "d.1" "d.2" "e" "f.1" "f.2"
Run Code Online (Sandbox Code Playgroud)
有一个简单的,R-thonic和美丽的方式来做到这一点?我应该说我现实生活中的列表(它没有被调用awesome)包含25000个mircoarray探针集标识符.
当我开始编写一些通用函数(我确信我能做到)时,我总是很紧张,因为我确信有些R guru过去曾经遇到过这个问题,并用一些不可思议的算法来解决这个问题.甚至必须在矢量中存储超过一半的元素.我只是不确定他们可能称之为什么.可能不是uniqueify.