我正在为特定的实验构建一类绘图工具.我目前有两种绘图方法,一种是使用imshow()的静态绘图,另一种是使用imshow()的"movie"格式.
这两种方法和任何将来的方法都可以获得与我可能编写的任何特定绘图方法相同的参数.我在使用plot类时在config对象中拥有所有这些参数.
我不想在每个绘图方法中重写代码.我想初始化一个对象(AxesImage,我认为)将设置这些args:vmin,vmax,extent_dim,Xlocs,Xlabels,Ylocs,Ylabels.
然后我将该对象传递给执行其他特定操作的各种方法.我不明白怎么做...
import matplotlib.pyplot as plt
data = data_dict[type] # could be real part of a complex number, phase, or the mag...
v_min, v_max = self.get_data_type_scale(data_dict, Type)
freq = data_dict['freq']
# essentially sets the aspect of the plot since the x and y resolutions could be different
extent_dim = self._get_extent(2)
# gets the labels for physical dimensions of the experiment
Xlocs,Xlabels,Ylocs,Ylabels = self._get_ticks(5,5,extent_dim)
# in the guts of a plot method, the basic idea is the call below. …Run Code Online (Sandbox Code Playgroud) 注意:
Speed is not as important as getting a final result.
However, some speed up over worst case is required as well.
Run Code Online (Sandbox Code Playgroud)
我有一个大阵列A:
A.shape=(20000,265) # or possibly larger like 50,000 x 265
Run Code Online (Sandbox Code Playgroud)
我需要计算相关系数.
np.corrcoeff # internally casts the results as doubles
Run Code Online (Sandbox Code Playgroud)
我只是借用了他们的代码并写了我自己的cov/corr而不是投入双打,因为我真的只需要32位浮点数.而且我抛弃了conj(),因为我的数据总是真实的.
cov = A.dot(A.T)/n #where A is an array of 32 bit floats
diag = np.diag(cov)
corr = cov / np.sqrt(np.mutliply.outer(d,d))
Run Code Online (Sandbox Code Playgroud)
我仍然没有内存,我正在使用264GB的大型内存机器
我被告知,快速的C库,可能正在使用一个将点积分解成碎片的例程,并且为了优化它,元素的数量被填充到2的幂.
我真的不需要计算相关系数矩阵的对称半部分.但是,我没有看到在合理的时间内使用python循环"手动"执行此操作的方法.
有没有人知道如何让numpy获得一个像样的点产品例程,这可以平衡内存使用与速度......?
干杯
更新:
有趣的是,写这些问题往往有助于我找到更好的谷歌查询的语言.
发现这个:
http://wiki.scipy.org/PerformanceTips
Run Code Online (Sandbox Code Playgroud)
不确定我是否按照它...所以,请评论或提供有关此解决方案,您自己的想法或仅对此类问题的一般评论的答案.
TIA
编辑:我很抱歉,因为我的阵列确实比我想象的要大得多.数组大小实际上是151,000 x 265我在264 GB的机器上运行内存不足,至少230 GB可用.
令我感到惊讶的是,对于使用dgemm并且小心使用C阶阵列的那种笨拙的调用没有做下蹲.
我正在使用 Anaconda 并且有一个适用于 Python27 的环境,在不久的将来,一个适用于 Python3 的环境。
我在使用绳索的 vim 时遇到了麻烦,b/c 我的原始构建链接到我的 /usr/local/vim(我认为..或类似的东西)。
我从阅读中意识到,我应该使用以下命令重新构建 vim:
./configure --enable-pythoninterp --with-python-config-dir=/home/wbg/anaconda/envs/py27/lib/python2.7/config --enable-prefix=/home/wbg
Run Code Online (Sandbox Code Playgroud)
所以我想知道,是否有更好的安装vim的方法,这样当我改变Anaconda环境时,我的vim也会改变。
蒂亚!
我之前从未使用过命名管道,最近意识到这正是我需要的.
我正在运行一个使用gnu parallel的程序,它可以生成为mySQL上的数据库格式化的输出吨(GB到1TB,现在很难知道).
我发现我可以打开两个终端:终端1有类似的东西:
find . -type f -name "*.h" | parallel --jobs 12 'cprogram {}' > /home/pipe
Run Code Online (Sandbox Code Playgroud)
管道是由fifo制成的mkfifo.
在第二个终端上,我运行一个类似于此的命令:
mysql DataBaseName -e "LOAD DATA LOCAL INFILE '/home/pipe' INTO TABLE tableName";
Run Code Online (Sandbox Code Playgroud)
有用...
但这很简陋......如果我理解正确,当第一个过程结束导致管道关闭时会产生EOF.
理想情况下,我想在具有不同参数的循环中运行第一个进程.每次迭代可能需要很长时间,我需要进行健全性检查,所以我不会放松一周,发现我有错误或错误的逻辑.
我想知道如何以标准方式将FIFO用于这种程序.
我正在从MATLAB过渡到Numpy并感受到一些成长的痛苦.
我有一个3D数组,让我们说它是3x3x3,我想要每个平面的标量和.在matlab中,我会使用:
sum_vec = sum(3dArray,3);
Run Code Online (Sandbox Code Playgroud)
TIA wbg
编辑:我的matlab代码错了.Matlab只能在一个暗淡中进行矢量化,因此需要一个循环.所以numpy变得更优雅......很酷.
MATLAB
for i = 1:3
sum_vec(i) = sum(sum(3dArray(:,:,i));
end
Run Code Online (Sandbox Code Playgroud) 我有一个用imshow()显示的空间数据图.
我需要能够覆盖产生数据的晶格.我有一个格子的png文件加载为黑白图像.我要叠加的这个图像的部分是黑色线条是格子,而不是看到线条之间的白色背景.
我想我需要将每个背景(白色)像素的alpha设置为透明(0?).
我是新来的,我真的不知道怎么问这个问题.
编辑:
import matplotlib.pyplot as plt
import numpy as np
lattice = plt.imread('path')
im = plt.imshow(data[0,:,:],vmin=v_min,vmax=v_max,extent=(0,32,0,32),interpolation='nearest',cmap='jet')
im2 = plt.imshow(lattice,extent=(0,32,0,32),cmap='gray')
#thinking of making a mask for the white background
mask = np.ma.masked_where( lattice < 1,lattice ) #confusion here b/c even tho theimage is gray scale in8, 0-255, the numpy array lattice 0-1.0 floats...?
Run Code Online (Sandbox Code Playgroud)

我正在使用sklearn用tf-idf Vectorizer对象进行一些NLP矢量化.可以使用关键字"token_pattern"构造此对象.
我想避免使用hashtags(#foobar),数字(以及以数字开头的字符串,即10mg),以"RT"(转发)开头的任何行,或"删除的推文"行.
另外,我想忽略unicode.
我想保留URL(不是'http://'),并将它们标记为可能存在于其中的任何单词([A-Za-z] +).
我对Regex有一些经验,但到目前为止还不需要更复杂的模式.
以下是我对所有内容的刺激......这显然不是最好的调查方式,但它总结了我目前对正则表达式规则的看法.
注意:这里的skearn doc 显示了使用字符串上的unicode标志的默认"token_pattern",我不明白为什么......也许是单独的问题.
pat2 = r"(?im)([A-Z]+)(?<!^@)([A-Z]+)(?<!^#)([A-Z]+)(?<!^(RT))([A-Z]+)(?<!^Deleted)(?<=^(http://))([A-Z]+)"
Run Code Online (Sandbox Code Playgroud)
我的分解:
(?im) #Are flags for 'multi-line' and 'case insensitive'
([A-Z]+)(?<!^@) #A negative look back, match [A-Z]+ only if not preceded by 'starts with @'.
(?<=^(http://))([A-Z]+) #A positive look forward, match [A-Z]+ only if 'starts with "http://"' is present.
Run Code Online (Sandbox Code Playgroud)
我觉得这不是一个优雅的解决方案,即使它被调整为工作......
TIA
更新:原始数据示例:
如果知道有用,我正在使用pandas数据帧来加载数据.我是熊猫的新手,可能会错过一些基于熊猫的解决方案.
从这些原始数据中,我只想要从文本和URL中获取的单词.这个例子很糟糕......请进一步评论,以帮助我更好地定义...... thx!
生的:
http://foxsportswisconsin.ning.com/profiles/blogs/simvastatin-20-mg-pas-cher-sur-internet-acheter-du-simvastatin-20
Run Code Online (Sandbox Code Playgroud)
符号化:
[foxsportswisconsin, ning, com, profiles, blogs, simvastatin, mg, pas, cher, sur, internet, acheter, du, simvastatin]
Run Code Online (Sandbox Code Playgroud)