草庐IT

高效化

全部标签

python - 使用 numpy 在 Pygame 中进行更高效的风洞模拟

我是一名航空学生,正在为我们的Python编程类(class)开展一个学校项目。作业是创建一个仅使用Pygame和numpy的程序。我决定创建一个风洞模拟来模拟二维机翼上的气流。我想知道从编程的角度来看是否有更有效的计算方法。我将解释该程序:我在这里附上一张图片:(稳定)流场是使用涡流板方法建模的。基本上,我使用的是Nx乘以Ny点的网格,其中每个点都有一个速度(u,v)向量。然后使用Pygame,我将这些网格点映射为圆圈,这样它们就像一个影响区域。网格点是下图中的灰色圆圈:我创建了N个粒子并通过如下迭代确定它们的速度:创建一个粒子列表。创建一个网格列表。对于网格列表中的每个网格点:对于

python - 使用 numpy 或 cython 进行高效的成对 DTW 计算

我正在尝试计算numpy数组中包含的多个时间序列之间的成对距离。请看下面的代码print(type(sales))print(sales.shape)(687,157)因此,sales包含687个长度为157的时间序列。使用pdist计算时间序列之间的DTW距离。importfastdtwimportscipy.spatial.distanceassddefmy_fastdtw(sales1,sales2):returnfastdtw.fastdtw(sales1,sales2)[0]distance_matrix=sd.pdist(sales,my_fastdtw)---编辑:尝试不

python - 高效的项目装箱算法(itertools/numpy)

我认为这是一个常见的组合问题,但我似乎找不到它的名称或任何相关资料。我在Python和numpy中这样做,但如果有一个快速的矩阵方法,我可能可以翻译。基本上,给定n个项目,我需要生成所有方法将它们放入m个箱子。例如,将4个项目分到3个箱中会得到类似[(4,0,0),(3,1,0),(3,0,1),(2,2,0),(2,1,1),...]。这是一种总量固定的产品。使用itertools实现这个很简单。importitertoolsdeffixed_total_product(bins,num_items):"""Returniteratorofallitembinningpossibil

python - 基于任意对象成员变量查找的python中对象的高效数据结构

我需要存储具有多个(>2)个整数成员变量的对象,并使用任何成员变量作为搜索键进行快速查找。为了便于说明,假设对象是3个整数的元组,我需要使用元组的任何元素作为此类元组列表中的键进行快速查找:collection=[(1,200,9),(2,300,8),(3,400,7)]查找就像:collection.lookup_by_first_element(1)#Return(1,200,9)collection.lookup_by_second_element(300)#Return(2,300,8)collection.lookup_by_third_element(250)#Retur

python - 使用 numpy 高效地将 16 位图像数据转换为 8 位显示,具有强度缩放

我经常将16位灰度图像数据转换为8位图像数据进行显示。调整最小和最大显示强度以突出图像的“有趣”部分几乎总是有用的。下面的代码大致可以满足我的要求,但它丑陋且效率低下,并且会生成许多图像数据的中间副本。如何以最少的内存占用和处理时间实现相同的结果?importnumpyimage_data=numpy.random.randint(#Realisticimageswouldbemuchlargerlow=100,high=14000,size=(1,5,5)).astype(numpy.uint16)display_min=1000display_max=10000.0print(im

python - 高效的 Matplotlib 重绘

我使用Matplotlib允许用户通过鼠标点击选择感兴趣的数据点,使用与thisanswer.非常相似的方法实际上,散点图显示在热图图像上,鼠标点击可以添加或删除散点。我的数据是使用pcolormesh()在后台绘制的,所以当我使用axis.figure.canvas.draw()更新Canvas时,散点和重新绘制背景热图。考虑到热图的大小,这对于一个可用的界面来说太慢了。有没有一种方法可以有选择地重绘散点而不重绘背景?示例代码:points=[]#Holdsalistof(x,y)scatterpointsdefonclick(event):#Clickeventhandlertoa

python - 常用词高效查找

我有一个分为单词的名称(字符串)列表。有800万个名字,每个名字最多由20个单词(token)组成。唯一代币数量为220万。我需要一种有效的方法来从查询中找到至少包含一个词的所有名称(可能也包含多达20个词,但通常只有几个)。我目前的方法使用PythonPandas,看起来像这样(后来称为original):>>>df=pd.DataFrame([['foo','bar','joe'],['foo'],['bar','joe'],['zoo']],index=['id1','id2','id3','id4'])>>>df.index.rename('id',inplace=True)#

python - 高效地为高密度区域创建密度图,为稀疏区域创建点

我需要制作一个功能类似于图中高密度区域的密度图的图,但低于某个阈值使用单个点。我在matplotlib缩略图库或谷歌搜索中找不到任何看起来与我需要的代码相似的现有代码。我有一个自己编写的工作代码,但它有点棘手,并且(更重要的是)当点/箱的数量很大时,它会花费NotAcceptable长时间。这是代码:importnumpyasnpimportmathimportmatplotlibasmplimportmatplotlib.pyplotaspltimportpylabimportnumpy.random#Createthecolormap:halfpurples={'blue':[(0

python - 高效地将 CSV 的最后 'n' 行读入 DataFrame

一些方法可以做到这一点:读取整个CSV,然后使用df.tail以某种方式反转文件(对大文件执行此操作的最佳方法是什么?)然后使用nrows参数读取以某种方式找到CSV中的行数,然后使用skiprows并读取所需的行数。也许进行block读取并丢弃初始block(尽管不确定这将如何工作)可以用更简单的方式完成吗?如果不是,应该首选这三者中的哪一个,为什么?可能相关:EfficientlyfindingthelastlineinatextfileReadingpartsof~13000rowCSVfilewithpandasread_csvandnrows不直接相关:Howtogetthe

python - Django:高效的模板/字符串分离和覆盖

我有一个呈现模板的通用DjangoView。该模板位于其他项目将使用的应用程序中。导入项目通常会将应用程序提供的View子类化。View有一个默认模板,它使用通用措辞来完成工作。99%的时间,子类View将只想更改文本,因此与其为了更改非标记措辞而让它们复制模板,我正在寻找一种方法来允许类的用户以最有效的方式替换模板中的措辞。到目前为止探索的选项:模板部分仅包含使用应用程序可以覆盖的文本(魔术,大量用户工作)View上的一个template_strings方法,它提供了一个字符串字典,这些字符串最终出现在子类可以覆盖的模板上下文中使用(滥用?)翻译系统,使应用程序提供默认的英语翻译,并