小编Cod*_*ung的帖子

如何在维护刻度的同时显示刻度标签的特定间隔

我目前正在尝试绘制一个带有很多刻度的图形。它对每个值都有从 0 到 50 的刻度,导致打包的刻度标签合并,使绘图变得非常混乱。我使用了刻度线

fig, ax = plt.subplots()
ax.set_xticks(np.arange(0,50))
ax.set_yticks(np.arange(0,50))
Run Code Online (Sandbox Code Playgroud)

并使用隐藏刻度标签

ax.set_xticklabels([])
ax.set_yticklabels([])
Run Code Online (Sandbox Code Playgroud)

然而,问题是这隐藏了所有刻度标签,而我希望保留一些标签,以便我可以使用标签轻松跟踪。

我试过做

ax.set_xticklabels(np.arange(0,50,5))
Run Code Online (Sandbox Code Playgroud)

但这只会导致前 10 个刻度使用不适当的标签进行标记(范围(0,50),间隔为 5)

我希望找到一种方法来显示间隔为 5(或任何特定间隔)的刻度“标签”,同时保留所有实际刻度(以便我可以将它们用于网格)。

python matplotlib xticks x-axis

5
推荐指数
1
解决办法
5414
查看次数

Python:替换模块类中的函数

我正在尝试替换类中定义的函数,以便在不更改实际代码的情况下修改其函数(如在内部工作中).我之前从未这样做过,因此在更换它时遇到了一些问题.更改代码将让我访问我的python库中的包,这是一个不太多的选择.

例如,如果模块名为testMOD

class testMOD(object):
      def testFunc(self, variable):
          var = variable
          self.something = var + 12
Run Code Online (Sandbox Code Playgroud)

然后我将导入testMOD,定义一个类(mytest = testMOD()),并访问类testFunc中定义的函数,并将其更改为已定义的函数.

例如,

from somemodule import testMOD
mytest = testMOD()

def alternativeFunc(self, variable):
    var = variable
    self.something = var + 1.2

#problem here
mytest.testFunc = alternativeFunc
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,如果我只是使用我定义的函数手动覆盖(?)类中的函数,它将无法正常工作.它没有给出任何语法错误,但是,问题是被替换的函数认为'self'是函数的另一个变量,并且说它需要另一个参数用于'变量'变量(我想这不是一个好名字).

我想要做的是使替换功能与被替换的功能完全相同,但需要额外的代码或一些小修改.但是,"自我"几乎不起作用,因为它应该在课堂上.是否有办法正确实现定义的函数来替换导入类的函数?

python class function python-module

5
推荐指数
2
解决办法
4771
查看次数

为什么 scipy 'cKDTree' 在寻找最近点时比 'cdist' 慢?

我在许多参考资料中都被告知 KDTree 是一种为大数据寻找最近邻的快速方法。我当前的问题是为给定的数据 A 找到 X 中最近的点。详细说明,目前 X 有 1,000,000 个数值数据,A 由 10,000 个组成。我想为 A 中的每个点找到 X 中最近的点。因此,结果应该是 10,000 个索引,指示 X 中的数据点。

当我使用带有 for 循环的 cdist(来自 scipy.spatial)来查找 A 中每个数据的最近点时,大约需要半小时(1972 秒),而使用 n_jobs 时 cKDTree.query 需要大约 50 分钟(2839 秒) = 4。

cdist 的代码如下:

t = time.time() 
nn = np.array([])
jump = 1000
nloop = np.ceil(A.shape[0]/jump).astype(int)
for ii in range(nloop):
   temp = cdist(X, A[ii*jump:(ii+1)*jump])
   nn = np.append(nn, np.argmin(temp, axis = 0))
print('Elapsed time: ', time.time() - t) # this was 1926 seconds (a …
Run Code Online (Sandbox Code Playgroud)

python kdtree nearest-neighbor scipy-spatial

5
推荐指数
0
解决办法
210
查看次数