似乎PyCharm总是在启动时更新连接的Python解释器,并在需要时扫描和更新所有包.对我来说,这意味着每当我打开PyCharm时,都会有更新进程在后台运行,我有时需要等待一整分钟,我觉得很烦人.
所以问题是:是否有任何方法可以禁用这种自动更新机制?如果我可以只在我想要的时候手动更新Python解释器和包,那将是最好的.
我想将一个 Series 附加到 DataFrame 中,其中 Series 的索引使用 与 DataFrame 的列匹配pd.concat,但它给了我惊喜:
df = pd.DataFrame(columns=['a', 'b'])
sr = pd.Series(data=[1,2], index=['a', 'b'], name=1)
pd.concat([df, sr], axis=0)
Out[11]:
a b 0
a NaN NaN 1.0
b NaN NaN 2.0
Run Code Online (Sandbox Code Playgroud)
我所期望的当然是:
df.append(sr)
Out[14]:
a b
1 1 2
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,它pd.concat不知道索引列。那么,如果我想将一个Series作为新行连接到DF,那么我只能使用它吗df.append?
我有一个带有月度索引的 DataFrame。我想检查时间指数是否在每月频率上是连续的,如果可能的话,检查它变得不连续的地方,例如在其指数中相邻的两个月之间有某些“间隔月”。
示例:以下时间序列数据
1964-07-31 100.00
1964-08-31 98.81
1964-09-30 101.21
1964-11-30 101.42
1964-12-31 101.45
1965-03-31 91.49
1965-04-30 90.33
1965-05-31 85.23
1965-06-30 86.10
1965-08-31 84.26
Run Code Online (Sandbox Code Playgroud)
错过了 1964/10、1965/[1,2,7]。
我的 Rstudio 版本在 Win10 上是 3.4.1 64 位。我已经wordcloud2通过命令安装了软件包
install.packages('devtools')
devtools::install_github("lchiffon/wordcloud2")
Run Code Online (Sandbox Code Playgroud)
事情进展得很顺利。然后我尝试在 R 控制台上运行官方文档中的示例:
letterCloud(demoFreq, word='R')
Run Code Online (Sandbox Code Playgroud)
然后出现的只是背景颜色,没有别的。网络浏览器是 Chrome 59.0 64 位。但是,其他功能wordcloud运行良好。
我想这应该是一个普遍的问题,所以希望有人能给我一些帮助,谢谢。
在MATLAB中将行/列附加到矩阵似乎需要考虑.例如,当我尝试将列附加到A具有许多行和多列的矩阵时,例如
A = [A, added_col]
Run Code Online (Sandbox Code Playgroud)
Matlab会警告我,由于这必须在内存中复制A,我最好使用预分配来提高速度.这是可以理解的,因为底层数据A占用了连续的内存块.
我的问题是,删除行/列会导致类似的问题吗?例如,要删除第二行A:
A(2,:) = []
Run Code Online (Sandbox Code Playgroud)
这个操作是否就地?我真的感到不确定,因为有一件事它似乎没有为内存中的数据创造任何新的空间,而另一方面,行将A被非连续地存储(因为第2行被删除).
那么内部会发生什么?这项操作是否足以在实践中使用?谢谢!
刚刚测试它的复杂性100000:
clc; clear;
N = 100000;
A = zeros(N, 3);
t1 = tic;
for ii = 1:N
A(ii, :) = [1 2 3];
end
t2 = toc;
Run Code Online (Sandbox Code Playgroud)
和
clc; clear;
N = 100000;
A = zeros(N, 3);
t1 = tic;
for ii = (N-1):-1:2
A(ii, :) = [];
end
t2 = toc;
Run Code Online (Sandbox Code Playgroud)
结果:第一个(修改预分配的矩阵)为0.009s,第二个为53.429(从矩阵中删除行).我认为这基本上解决了这个问题:不,从矩阵中删除行/列是无效的,因为它肯定涉及深度复制数据和重新分配内存.
此外,删除 …
在给出的例子的文档都似乎是情况下,在第一个调用的参数defaultdict是"常量"功能,如int,list或者lambda: const等我不知道,如果defaultdict只是应该采取恒定的功能作为其callabe的说法,但如果没有,我希望callable依赖于我给出的缺失键值.例如
toy = collections.defaultdict(lambda x: len(x), {'foo': 3})
toy['barr']
Run Code Online (Sandbox Code Playgroud)
我期望的是每当我给出一个缺少的键字符串时,例如'barr',容器可以创建一个新的条目,'barr'其中键是键,其长度4是值.但它不起作用.相反,它给我以下错误:
TypeError: <lambda>() missing 1 required positional argument: 'x'
Run Code Online (Sandbox Code Playgroud)
我希望'barr'在lambda这里有这个论点,但显然不是这样.那可能出了什么问题?
似乎在Spyder(IPython3 Kernel)中,可以通过在代码单元顶部运行%%timeor %%timeit命令来轻松计时代码单元:
#%%
%%time # or %%timeit which measures average runtime from multiple runs
....
#%% (the previous cell ends and the next begins)
Run Code Online (Sandbox Code Playgroud)
运行上面的代码可以获得由这对代码定义的单元格的运行时间#%%.这就是Spyder中的工作方式,但在Jupyter Notebook环境中并不常用.
在Jupyter中,代码单元格不是由#%%分隔符定义的,而是通过单击菜单栏中的按钮来创建.而据我试过了,命令%%time和%%timeit既能提高编译错误.似乎Jupyter无法识别它们,但它很奇怪,因为我的Jupyter实际上使用了与Spyder相同的IPython内核.在Jupyter中有效的一点是%time和%timeit命令,但它们只能测量一行代码的运行时间,即必须像
%time blah blah
Run Code Online (Sandbox Code Playgroud)
事实证明,我甚至无法测量for由多条线组成的循环.所以这种方法对我来说并不合适.是否有任何方法可以使用%time(it)Jupyter中的magic命令等来评估单元运行时?
(PS:如果在Spyder中我%time在一个单元格的顶部附加一个命令,它会给出,Wall time: 0 ns因为在同一行中没有任何跟随它的东西,它实际上没有测量任何东西.)
python ×5
pandas ×2
anaconda ×1
append ×1
dataframe ×1
datetime ×1
defaultdict ×1
dictionary ×1
ide ×1
ipython ×1
matlab ×1
matrix ×1
memory ×1
performance ×1
pycharm ×1
python-3.x ×1
r ×1
spyder ×1
time ×1
word-cloud ×1