小编Har*_*wel的帖子

查找最近的值并返回Python中的数组索引

我发现这篇文章:Python:在数组中查找元素

它是关于通过匹配值返回数组的索引.

另一方面,我所想做的是相似但不同的.我想找到目标值的最近值.例如我正在寻找4.2,但我知道在数组中没有4.2,但我想返回值4.1而不是4.4的索引.

这样做的最快方法是什么?

我正在考虑用旧的方式来做它,就像我以前用Matlab做的那样,它使用数组A,我想从索引到减去目标值并取绝对值,然后选择min.像这样: -

[~,idx] = min(abs(A - target))
Run Code Online (Sandbox Code Playgroud)

这是Matlab代码,但我是Python的新手,所以我在想,有没有一种快速的方法在Python中做到这一点?

非常感谢你的帮助!

python numpy python-3.x

34
推荐指数
4
解决办法
4万
查看次数

Matplotlib Agg渲染复杂性错误

我正在尝试使用Python matplotlib打印600 dpi图表.但是,Python绘制了8个图中的2个,并输出错误:

OverflowError: Agg rendering complexity exceeded. Consider downsampling or decimating your data.
Run Code Online (Sandbox Code Playgroud)

我正在绘制一大块数据(每列7,500,000个数据)所以我想这要么是一些重载问题,要么我需要设置一个大的cell_block_limit.

我试图在Google上搜索更改cell_block_limit的解决方案,但无济于事.什么是好方法?

代码如下: -

        import matplotlib.pyplot as plt
        from matplotlib.ticker import MultipleLocator, FormatStrFormatter

        majorLocator   = MultipleLocator(200)
        majorFormatter = FormatStrFormatter('%d')
        minorLocator   = MultipleLocator(20)

        fig = plt.figure()
        ax = fig.add_subplot(111)
        ax.xaxis.set_major_locator(majorLocator)
        ax.xaxis.set_major_formatter(majorFormatter)
        ax.xaxis.set_minor_locator(minorLocator)
        ax.xaxis.set_ticks_position('bottom')
        ax.xaxis.grid(True,which='minor')
        ax.yaxis.grid(True)
        plt.plot(timemat,fildata)
        plt.xlabel(plotxlabel,fontsize=14)
        plt.ylabel(plotylabel,fontsize=14)      
        plt.title(plottitle,fontsize=16)
        fig.savefig(plotsavetitle,dpi=600)
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-3.x

7
推荐指数
1
解决办法
3191
查看次数

Matplotlib未知属性"headwidth"和"head_width"

我为了一个看似简单的问题而全身都在摸不着头脑.我试图调整Matplotlib中箭头的头宽.

这是一个有效的代码:

import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0,2*np.pi,500)
y = np.sin(t)

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)
ax.plot(t,y)

ax.annotate('', xy=(1, -1), xytext=(2, 0),
arrowprops=dict(arrowstyle='<->', facecolor='black'))
Run Code Online (Sandbox Code Playgroud)

带双头箭头的正弦图

如图所示,它绘制了一个漂亮的双头箭头.现在当我想改变头宽时:

ax.annotate('', xy=(1, -1), xytext=(2, 0),
arrowprops=dict(arrowstyle='<->', facecolor='black',headwidth=10))
Run Code Online (Sandbox Code Playgroud)

要么

ax.annotate('', xy=(1, -1), xytext=(2, 0), 
arrowprops=dict(arrowstyle='<->', facecolor='black',head_width=10))
Run Code Online (Sandbox Code Playgroud)

返回的错误是:

AttributeError: Unknown property headwidth
Run Code Online (Sandbox Code Playgroud)

要么

AttributeError: Unknown property head_width
Run Code Online (Sandbox Code Playgroud)

似乎我无法通过Google找到解决这个简单问题的任何资源.有什么出路吗?

非常感谢您的时间和关注!

python matplotlib python-2.7

6
推荐指数
1
解决办法
4679
查看次数

如何在python函数中通过exec(“ import xxx”)使模块可用?

我为自己编写了一个简单的函数,该函数可以筛选Python文件夹并查找可能的模块在哪里。我想做的很简单。我传递了一个模块导入字符串,该函数将在其中找到模块的文件夹cd,然后将其导入到我正在使用的任何环境中,例如:

anyimport('from fun_abc import *')
Run Code Online (Sandbox Code Playgroud)

最初我尝试过:

class anyimport(object):
    def __init__(self, importmodule, pythonpath='/home/user/Python', finddir=finddir):

        ##################################################################    
        ### A BUNCH OF CODES SCANNING THE DIRECTORY AND LOCATE THE ONE ###
        ##################################################################
        ### "pointdir" is where the directory of the file is ###
        ### "evalstr" is a string that looks like this : ---
        ### 'from yourmodule import *'

        os.chdir(pointdir)
        exec evalstr
Run Code Online (Sandbox Code Playgroud)

当我在iPython Notebook中编写整个代码时,它就可以工作。所以问题就由我溜走了。然后我发现它不能正常工作,因为函数导入的模块保留在函数的局部变量空间中。

然后,我发现了这个Stack Overflow讨论:“在Python中,为什么在函数中的exec中导入无效?” 。因此,我将代码更改为以下内容:

class anyimport(object):
    def __init__(self, importmodule, pythonpath='/home/user/Python', finddir=finddir):

        ##################################################################    
        ### A BUNCH OF CODES SCANNING THE DIRECTORY …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

3
推荐指数
1
解决办法
3022
查看次数

标签 统计

python ×4

matplotlib ×2

python-2.7 ×2

python-3.x ×2

numpy ×1