我正在使用通过SSH连接的远程解释器运行项目(PyCharm Professional 2016.3.3)。当我建立连接时,一切正常,但是如果我的连接中断(我不小心合上了笔记本电脑盖,进入了睡眠模式,或者由于某些未知原因,wifi连接暂时中断了),那么当我重新连接时,控制台会话将终止Process finished with exit code -1。
交互式控制台的输出为:
ssh://username@remote_server:22/usr/bin/python /home/some_path/.pycharm_helpers/pydev/pydevconsole.py 0 0
PyDev console: using IPython 5.1.0
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
>>> a = 1
>>> # At this point I break the connection and then re-establish it after about 1 min.
Process finished with exit code -1
Run Code Online (Sandbox Code Playgroud)
在此示例中,我禁用了wifi,然后重新启用,连接到其他wifi源,然后再连接回原始wifi源。这种情况发生的频率适中(可能每天一次),可能是真正的障碍。
也许有可以更改的设置可以避免这种情况,还是有一种更强大的连接方法可以将控制台连接到远程主机上运行的进程?理想的情况是,如果我失去与一个wifi源的连接并与另一个wifi源建立连接,那么我的进程将不会被杀死。
注意:进行交互式会议很重要,因为我的工作是基于研究的,因此我需要能够交互式地编写和运行代码。
我有一个很大的数据框,并且我存储了很多冗余值,这些值使处理数据变得困难。我有一个形式的数据框:
import pandas as pd
df = pd.DataFrame([["a","g","n1","y1"], ["a","g","n2","y2"], ["b","h","n1","y3"], ["b","h","n2","y4"]], columns=["meta1", "meta2", "name", "data"])
>>> df
meta1 meta2 name data
a g n1 y1
a g n2 y2
b h n1 y3
b h n2 y4
Run Code Online (Sandbox Code Playgroud)
我在其中输入了想要的新列的名称,name并在中输入了相应的数据data。
我想产生一个形式的数据框:
df = pd.DataFrame([["a","g","y1","y2"], ["b","h","y3","y4"]], columns=["meta1", "meta2", "n1", "n2"])
>>> df
meta1 meta2 n1 n2
a g y1 y2
b h y3 y4
Run Code Online (Sandbox Code Playgroud)
所调用meta的列是包含大多数数据的其他15列以上的列,我认为这不是特别适合索引的。我的想法是,目前我存储了很多重复/冗余的数据meta,我想产生一个更紧凑的数据框。
我发现了一些类似的问题,但无法指出我需要执行哪种操作:数据透视,重新索引,堆栈或拆栈等。
PS-原始索引值对我而言并不重要。
任何帮助将非常感激。
我认为相关的问题:
我认为以下问题与我要执行的操作有关,但是我不知道如何应用它,因为我不想产生更多的索引。
我必须在Windows上使用Anaconda,并试图编写一个编织为pdf的RMarkdown文档,其中在RMarkdown中我使用了一些Python代码段。但是,当我尝试使matplotlib使用LaTeX(带有rc.params)时,我发现它不会渲染,但是会出现错误,我无法理解也无法修复。令人反感的是
mpl.rcParams.update({"text.usetex": True})
...
plt.title(r'Some Latex with symbol \$')
Run Code Online (Sandbox Code Playgroud)
是LaTeX试图解释\$哪些引发问题。据我所知,这应该正确地解决。如果我删除了\$所有内容,则一切正常(或者如果我将其替换为$e=mc^2$)。
Quitting from lines 31-34 (example.Rmd)
Error in py_call_impl(callable, dots$args, dots$keywords) :
RuntimeError: Evaluation error: KeyError: b'tcrm1200'
Detailed traceback:
File "C:\Users\Harry\ANACON~1\lib\site-packages\matplotlib\pyplot.py", line 722, in savefig
res = fig.savefig(*args, **kwargs)
File "C:\Users\Harry\ANACON~1\lib\site-packages\matplotlib\figure.py", line 2180, in savefig
self.canvas.print_figure(fname, **kwargs)
File "C:\Users\Harry\ANACON~1\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 88, in print_figure
super().print_figure(*args, **kwargs)
File "C:\Users\Harry\ANACON~1\lib\site-packages\matplotlib\backend_bases.py", line 2082, in print_figure
**kwargs)
File "C:\Users\Harry\ANACON~1\lib\site-packages\matplotlib\backends\backend_pdf.py", line 2503, in print_pdf
self.figure.draw(renderer) …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个c ++ lambda函数,并且不喜欢使用它auto作为类型.目前它看起来像:
#include <iostream>
int main() {
// Sends the address of an integer to a function which prints out the contents;
auto print_int = [](int* a) {std::cout << *a << std::endl;};
int a;
a = 3;
print_int(&a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,我想改变auto类似std::function<void(int)>但不确定如何.答案
似乎相关,但我不知道如何适应它.谢谢.
[解决方案]
尝试使用时访问我的主目录时遇到了一些意外的行为pandas.read_excel.
我想访问的文件可以在以下位置找到
/users/isys/orsheridanmeth
Run Code Online (Sandbox Code Playgroud)
这是cd ~/我的所在.我想访问的文件是
'~/workspace/data/example.xlsx'
Run Code Online (Sandbox Code Playgroud)
以下工作读取excel文件(使用import pandas as pd):
df = pd.read_excel('workspace/data/example_.xlsx', 'Sheet1')
Run Code Online (Sandbox Code Playgroud)
而
df = pd.read_excel('~/workspace/data/example.xlsx', 'Sheet1')
Run Code Online (Sandbox Code Playgroud)
给我以下错误:
df = pd.read_excel('~/workspace/data/example.xlsx', 'Sheet1')
Traceback (most recent call last):
File "/users/is/ahlpypi/egg_cache/i/ipython-3.2.0_1_ahl1-py2.7.egg/IPython/core/interactiveshell.py", line 3035, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-397-4412a9e7c128>", line 1, in <module>
df = pd.read_excel('~/workspace/data/example.xlsx', 'Sheet1')
File "/users/is/ahlpypi/egg_cache/p/pandas-0.16.2_ahl1-py2.7-linux-x86_64.egg/pandas/io/excel.py", line 151, in read_excel
return ExcelFile(io, engine=engine).parse(sheetname=sheetname, **kwds)
File "/users/is/ahlpypi/egg_cache/p/pandas-0.16.2_ahl1-py2.7-linux-x86_64.egg/pandas/io/excel.py", line 188, in __init__
self.book = xlrd.open_workbook(io)
File "/users/is/ahlpypi/egg_cache/x/xlrd-0.9.2-py2.7.egg/xlrd/__init__.py", line 394, in open_workbook …Run Code Online (Sandbox Code Playgroud) 当尝试使用df.loc[]我重新分配列中的某些值时,出现奇怪的类型转换错误,将日期时间转换为整数。
最小示例:
import numpy as np
import pandas as pd
import datetime
d = pd.DataFrame(zip(['12/6/2015', np.nan], [1, 2]), columns=list('ab'))
print(d)
d.loc[pd.notnull(d.a), 'a'] = d.a[pd.notnull(d.a)].apply(lambda x: datetime.datetime(2015,12,6))
print(d)
Run Code Online (Sandbox Code Playgroud)
完整示例:
这是我的数据框(包含NaN):
>>> df.head()
prior_ea_date quarter
0 12/31/2015 Q2
1 12/31/2015 Q3
2 12/31/2015 Q3
3 12/31/2015 Q3
4 12/31/2015 Q2
>>> df.prior_ea_date
0 12/31/2015
1 12/31/2015
...
341486 1/19/2016
341487 1/6/2016
Name: prior_ea_date, dtype: object
Run Code Online (Sandbox Code Playgroud)
我要运行以下代码行:
df.loc[pd.notnull(df.prior_ea_date), 'prior_ea_date'] = df.prior_ea_date[pd.notnull(df.prior_ea_date)].apply(dt, usa=True)
Run Code Online (Sandbox Code Playgroud)
dt日期时间解析器的字符串在哪里,正常运行时会给出:
>>> df.prior_ea_date[pd.notnull(df.prior_ea_date)].apply(dt, usa=True).head()
0 2015-12-31
1 2015-12-31 …Run Code Online (Sandbox Code Playgroud) 我试图比较两个不同的列表以查看它们是否相等,并且打算删除NaN,但发现我的列表比较仍然有效,尽管NaN == NaN -> False。
有人可以解释为什么下面的结果为True或False,因为我发现此行为是意外的。谢谢,
我已阅读以下内容,似乎无法解决该问题:
(Python 2.7.3,numpy-1.9.2)
我用*结尾标记了令人惊讶的评估
>>> nan = np.nan
>>> [1,2,3]==[3]
False
>>> [1,2,3]==[1,2,3]
True
>>> [1,2,nan]==[1,2,nan]
True ***
>>> nan == nan
False
>>> [nan] == [nan]
True ***
>>> [nan, nan] == [nan for i in range(2)]
True ***
>>> [nan, nan] == [float(nan) for i in range(2)]
True ***
>>> float(nan) is (float(nan) + 1)
False
>>> float(nan) …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚我可以将多少东西装入矢量硬件中。以支持 Intel AVX-512 的硬件为例,我可以将 8 个双精度(64 位)或 16 个单精度(32 位)放入我的向量中。但是,如果我在 64 位计算机上运行,那么我的默认指针大小很可能是 64 位。因此,如果我想取消引用指针(或者只是使用数组语法访问和数组),那么这将需要 64 位整数操作。这似乎表明,在 64 位机器上,我可以拥有的最小分区是 64 位数据类型。
然后考虑下面的 MWE,我希望编译器能看到我只处理 32 位对象(或更小)。鉴于我预计,如果我可以将向量划分为 32 位数据类型而不是使用 64 位数据类型,那么减少/计算(假设我正在做一些计算强度更大且带宽限制更少的事情)将在一半的时间内完成。
在我看来,如果我有向量寄存器并且我想要进行向量运算,那么如果我需要
n向量寄存器,其中每个寄存器都分为m-位的数据类型,那么我希望向量化的任何代码部分都不能使用数据类型比大m。(?)
微量元素
使用icc18.0.0进行编译-mkl -O2 -qopenmp -qopt-report,其中优化报告验证了 for 循环矢量化。
#include <stdlib.h>
#include <stdio.h>
#define N 1024
int main(int argc, char **argv)
{
unsigned int a[N];
for (unsigned int i = 0; i < N; …Run Code Online (Sandbox Code Playgroud) 我一直在运行一些计时实验,以确定i从alength数组中检索随机元素需要多长时间n,并且发现我的硬件大约需要 log(n)。我试图推断是硬件\架构的哪一点导致了这个,或者可能是负责任的。(理想情况下,可引用的技术参考是我所追求的)。
它是类似于以下内容的 C 代码:
unsigned long long int n; // Some very big number!
double * lookup_table = malloc(sizeof(double) * n); // So big it only fits in RAM
unsigned long long int i = UNIFORM_RNG(0, n); // Integer in [0, n)
double x = lookup_table[i];
Run Code Online (Sandbox Code Playgroud)
关键思想是有一个大数组lookup_table,我将随机需要其条目(因此我可以有信心地预期缓存/页面未命中)。数组太大了,我知道需要从 RAM 中挖掘出该值。
上面的部分代码包含在一个 for 循环中,所以我有一定的信心我正在计时我认为我计时并具有所需的精度。
程序访问 RAM 需要多长时间?(提到 O(1) 和 O(log(n)) 但似乎没有提供任何指向硬件的解释)。
64 位 …
我惊讶地发现,当我使用savefig它时transparent=True,删除了facecolor我可能已经设置的内容。
如何才能不丢失我手动设置的任何背景颜色(包括白色)?
transparent=Falseplt.savefig('temp.pdf', format='pdf', transparent=False, bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)
transparent=Trueplt.savefig('temp.pdf', format='pdf', transparent=True, bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)
import matplotlib as mpl
rc_fonts = {
"text.usetex": True,
'text.latex.preview': True,
"font.size": 50,
'mathtext.default': 'regular',
'axes.titlesize': 55,
"axes.labelsize": 55,
"legend.fontsize": 50,
"xtick.labelsize": 50,
"ytick.labelsize": 50,
'figure.titlesize': 55,
'figure.figsize': (10, 6.5), # 15, 9.3
'text.latex.preamble': [
r"""\usepackage{lmodern,amsmath,amssymb,bm,physics,mathtools,nicefrac,letltxmacro,fixcmex}
"""],
"font.family": "serif",
"font.serif": "computer modern roman",
}
mpl.rcParams.update(rc_fonts)
import matplotlib.pylab as plt
from mpl_toolkits.axes_grid1.inset_locator import inset_axes, InsetPosition, mark_inset
from numpy …Run Code Online (Sandbox Code Playgroud)