假设我创建了一个包含两列b(一个DateTime)和c一个整数的pandas DataFrame .现在我想从第一列(b)中的值创建一个DatetimeIndex :
import pandas as pd
import datetime as dt
a=[1371215423523845, 1371215500149460, 1371215500273673, 1371215500296504, 1371215515568529, 1371215531603530, 1371215576463339, 1371215579939113, 1371215731215054, 1371215756231343, 1371215756417484, 1371215756519690, 1371215756551645, 1371215756578979, 1371215770164647, 1371215820891387, 1371215821305584, 1371215824925723, 1371215878061146, 1371215878173401, 1371215890324572, 1371215898024253, 1371215926634930, 1371215933513122, 1371216018210826, 1371216080844727, 1371216080930036, 1371216098471787, 1371216111858392, 1371216326271516, 1371216326357836, 1371216445401635, 1371216445401635, 1371216481057049, 1371216496791894, 1371216514691786, 1371216540337354, 1371216592180666, 1371216592339578, 1371216605823474, 1371216610332627, 1371216623042903, 1371216624749566, 1371216630631179, 1371216654267672, 1371216714011662, 1371216783761738, 1371216783858402, 1371216783858402, 1371216783899118, 1371216976339169, 1371216976589850, 1371217028278777, 1371217028560770, 1371217170996479, 1371217176184425, 1371217176318245, 1371217190349372, 1371217190394753, 1371217272797618, 1371217340235667, 1371217340358197, …Run Code Online (Sandbox Code Playgroud) 我想做一些类似于git rebase但没有折叠并行提交的东西.
假设我有以下提交:
B (bar)
/
A-C-D (foo)
Run Code Online (Sandbox Code Playgroud)
现在我想在分支foo中将D引入的更改引入C中,并将它们应用于分支栏中的B. 所以我最终得到以下结果:
B-E (bar)
/
A-C-D (foo)
Run Code Online (Sandbox Code Playgroud)
提交B和E之间的差异等于提交C和D之间的差异.这可能吗?有没有办法在不创建补丁的情况下完成?
假设我想为网格上的每个点计算一个值.我将定义一些函数func,它接受两个值x并y作为参数并返回第三个值.在下面的示例中,计算此值需要在外部字典中查找.然后我会生成一个点网格并对func每个点进行评估以获得我想要的结果.
下面的代码就是这样做的,但是有点迂回.首先,我将X和Y坐标矩阵重塑为一维数组,计算所有值,然后将结果重新整形为矩阵.我的问题是,这可以以更优雅的方式完成吗?
import collections as c
# some arbitrary lookup table
a = c.defaultdict(int)
a[1] = 2
a[2] = 3
a[3] = 2
a[4] = 3
def func(x,y):
# some arbitrary function
return a[x] + a[y]
X,Y = np.mgrid[1:3, 1:4]
X = X.T
Y = Y.T
Z = np.array([func(x,y) for (x,y) in zip(X.ravel(), Y.ravel())]).reshape(X.shape)
print Z
Run Code Online (Sandbox Code Playgroud)
此代码的目的是生成一组值,我可以pcolor在matplotlib中使用它来创建热图类型图.
是否可以制作具有两个独立y轴的绘图,使刻度线对齐?
以下是一半解决方案的示例.我使用了y轴加倍twinx,但是刻度标记没有对齐,并且网格线在图上形成了一个尴尬的图案.有没有办法让刻度线共享相同的位置,但对应不同的y值?在下面的例子中,我希望左边的5的刻度线与右边的6的刻度线标记处于同一垂直位置.
import numpy as np
a = np.random.normal(10, 3, size=20)
b = np.random.normal(20, 5, size=40)
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.hist(a)
ax2.hist(b)
Run Code Online (Sandbox Code Playgroud)

本练习的首要目的是使两条轴的网格线重叠.
我想创建与网格对应的点列表.因此,如果我想创建从(0,0)到(1,1)的区域网格,它将包含点(0,0),(0,1),(1,0),(1, 0).
我知道这可以通过以下代码完成:
g = np.meshgrid([0,1],[0,1])
np.append(g[0].reshape(-1,1),g[1].reshape(-1,1),axis=1)
Run Code Online (Sandbox Code Playgroud)
产生结果:
array([[0, 0],
[1, 0],
[0, 1],
[1, 1]])
Run Code Online (Sandbox Code Playgroud)
我的问题是双重的:
目前,在ipython笔记本中创建两个连续图时,它们会一个在另一个下面显示:

我想知道是否有任何方法让它们按行显示,直到窗口中的空间用完为止.因此对于前两个图,输出将如下所示:

我意识到我可以通过在网格中排列子图来做类似的事情,但是我想知道是否可以自动执行它以便在空间用完时将图包裹到下一个"线"上?
我有以下代码,它获取pandas数据帧的一列中的值,并使它们成为新数据框的列.数据帧第一列中的值将成为新数据帧的索引.
从某种意义上说,我想将邻接列表转换为邻接矩阵.这是迄今为止的代码:
import pandas as pa
print "Original Data Frame"
# Create a dataframe
oldcols = {'col1':['a','a','b','b'], 'col2':['c','d','c','d'], 'col3':[1,2,3,4]}
a = pa.DataFrame(oldcols)
print a
# The columns of the new data frame will be the values in col2 of the original
newcols = list(set(oldcols['col2']))
rows = list(set(oldcols['col1']))
# Create the new data matrix
data = np.zeros((len(rows), len(newcols)))
# Iterate over each row and fill in the new matrix
for row in zip(a['col1'], a['col2'], a['col3']):
rowindex = rows.index(row[0])
colindex = newcols.index(row[1]) …Run Code Online (Sandbox Code Playgroud) 我正在尝试将信息传递给不接受来自stdin的输入的程序.为此,我使用/ dev/stdin作为参数,然后尝试输入我的输入.我注意到如果我用管道字符做这个:
[pkerp@comp ernwin]$ cat fess/structures/168d.pdb | MC-Annotate /dev/stdin
Run Code Online (Sandbox Code Playgroud)
我没有输出.但是,如果我使用左插入符字符做同样的事情,它可以正常工作:
[pkerp@plastilin ernwin]$ MC-Annotate /dev/stdin < fess/structures/168d.pdb
Residue conformations -------------------------------------------
A1 : G C3p_endo anti
A2 : C C3p_endo anti
A3 : G C3p_endo anti
Run Code Online (Sandbox Code Playgroud)
我的问题是,这两项业务之间有什么区别?为什么它们会产生不同的结果呢?作为一个额外的问题,是否有一个使用"<"符号指定输入的正确术语?
更新:
我目前最好的猜测是,正在运行的程序内部的东西会利用文件中的搜索.下面的答案似乎表明它与文件指针有关,但运行以下小测试程序:
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *f = fopen(argv[1], "r");
char line[128];
printf("argv[1]: %s f: %d\n", argv[1], fileno(f));
while (fgets(line, sizeof(line), f)) {
printf("line: %s\n", line);
}
printf("rewinding\n");
fseek(f, 0, SEEK_SET);
while (fgets(line, sizeof(line), f)) {
printf("line: %s\n", line);
} …Run Code Online (Sandbox Code Playgroud) 假设我有许多物体(类似于蛋白质,但不完全相同),每个物体都由n个3D坐标的矢量表示.这些对象中的每一个都定位在空间的某个地方.它们的相似性可以通过使用Kabsch算法对齐它们并计算对齐坐标的均方根偏差来计算.
我的问题是,以一种方式聚集大量这些结构的推荐方法是提取人口最多的聚类(即大多数结构所属的聚类).另外,有没有办法在python中执行此操作.举例来说,这是一组平凡的非聚集结构(每个都由四个顶点的坐标表示):

然后是所需的聚类(使用两个聚类):

我已经尝试将所有结构与参考结构(即第一个结构)对齐Pycluster.kcluster,然后使用参考和对齐坐标之间的距离执行k-means ,但这看起来有点笨拙并且不能很好地工作.每个群集中的结构最终并不是非常相似.理想情况下,这种聚类不会对差异向量进行,而是对实际结构本身进行,但结构具有维度(n,3)而不是k均值聚类所需的(n,).
我试过的另一个选择是scipy.clustering.hierarchical.这似乎工作得很好,但是我无法确定哪个群集是最常填充的,因为通过向上移动到树的下一个分支,总能找到更多填充的群集.
任何有关不同(已在python中实现)聚类算法的想法或建议或想法将不胜感激.
有没有办法在 python 中使用 pv 程序来获取操作的进度?
到目前为止我有以下内容:
p0 = sp.Popen(["pv", "-f", args.filepath],
bufsize=0,
stdout=sp.PIPE,
stderr=sp.PIPE)
p1 = sp.Popen(["awk", "{print $1, $2, $1, $3, $4 }", "{}".format(args.filepath)],
stdout=sp.PIPE,
stdin=p0.stdout)
Run Code Online (Sandbox Code Playgroud)
但我无法从 获得连续输出p0。我试过:
for line in p0.stderr:
print("line:", line)
Run Code Online (Sandbox Code Playgroud)
但这会等待该过程完成,然后仅打印来自的最后一个进度报告pv。有谁知道我怎样才能让它打印不断更新的状态?