我正在加载一个CSV文件(如果你想要特定的文件,那就是来自http://www.kaggle.com/c/loan-default-prediction的培训csv ).在numpy的加载CSV发生显着比大熊猫更多的时间.
timeit("genfromtxt('train_v2.csv', delimiter=',')", "from numpy import genfromtxt", number=1)
102.46608114242554
timeit("pandas.io.parsers.read_csv('train_v2.csv')", "import pandas", number=1)
13.833590984344482
Run Code Online (Sandbox Code Playgroud)
我还要提到的是,numpy内存使用量波动更大,更高,并且一旦加载就会显着提高内存使用率.(numpy为2.49 GB,pandas为~600MB)pandas中的所有数据类型都是8个字节,因此不同的dtypes不同.我无法最大限度地减少内存使用量,因此时差不能归因于分页.
这种差异的原因是什么?genfromtxt效率低下吗?(并泄漏了一堆内存?)
编辑:
numpy版本1.8.0
pandas版本0.13.0-111-ge29c8e8
我想知道在python中是否可以使用这样的东西(3.2,如果那是相关的).
with assign_match('(abc)(def)', 'abcdef') as (a, b):
print(a, b)
Run Code Online (Sandbox Code Playgroud)
行为在哪里:
a和b
None,它将完全绕过上下文我的目标基本上是一种非常简洁的上下文行为方式.
我尝试制作以下上下文管理器:
import re
class assign_match(object):
def __init__(self, regex, string):
self.regex = regex
self.string = string
def __enter__(self):
result = re.match(self.regex, self.string)
if result is None:
raise ValueError
else:
return result.groups()
def __exit__(self, type, value, traceback):
print(self, type, value, traceback) #testing purposes. not doing anything here.
with assign_match('(abc)(def)', 'abcdef') as (a, b):
print(a, b) #prints abc def
with assign_match('(abc)g', 'abcdef') as (a, …Run Code Online (Sandbox Code Playgroud) 这似乎是一个非常简单的问题,但我找不到任何相关的文档.
我在Numpy有一个图像,我想要imshowFFT.
在Matlab中我可以做到
F = fft(myimg)
imshow(F)
Run Code Online (Sandbox Code Playgroud)
我不能在Numpy做同样的事情因为F很复杂.试图imshow(real(F))给我一个全黑的图像 - 我猜是因为在[0,1]而不是0..255.乘以255也无法解决问题.
关于如何获得我的情节的任何想法?
更新:
好的,natan指出我错误地简化了这个问题.请允许我回顾一下.我有一个尺寸为(200,30,30,3)的视频矩阵.200帧,30x30像素,3色通道.对于每个像素的每个颜色通道,我想在该系列中计算该像素的fft.这应该给我一个新的矩阵,即(200,30,30,3).对于每个像素,跨每个颜色通道,每个像素的200维暗时间傅里叶变换.然后,我应该能够看到例如由每个像素中的傅立叶变换的第一系数的值创建的图像.
请注意,matlab fft在第一个非单元维度上运行,所以F = fft(video)正在做我正在做的事情.
我正在尝试编写一个函数,该函数作用于任何文件类型(因此不是特定的ftplugin),它根据文件类型具有不同的行为.例如
if (filetype=='objc')
"do something
elseif (filetype='cpp')
"do something else
endif
Run Code Online (Sandbox Code Playgroud)
我通读了filetype文档,但似乎没有任何内容可以引用它.建议吗?
我不完全确定如何对这个问题进行分类.感觉就像我发现了一个错误tail和/或bash,但很明显,这更像是我理解中的错误!
我运行了以下命令:
tail -f -n`wc -l scrape.log` scrape.log
Run Code Online (Sandbox Code Playgroud)
为了cat整个文件和添加的任何新材料.但是,这个tail文件编辑了两次.运行此命令:
tail -f -n`wc -l scrape.log`
Run Code Online (Sandbox Code Playgroud)
给了我想要的结果,tail文件一次.我认为反引号是一个Bash转义工具,在运行下一个命令之前"预处理"一个命令.这里发生了什么?