小编bee*_*eep的帖子

为什么numpy sum比+运算符慢10倍?

我注意到,非常紧张,np.sum比手写总和慢10倍.

带轴的np.sum:

p1 = np.random.rand(10000, 2)
def test(p1):
    return p1.sum(axis=1)
%timeit test(p1)
Run Code Online (Sandbox Code Playgroud)

每回路186μs±4.21μs(平均值±标准偏差,7次运行,每次1000次循环)

没有轴的np.sum:

p1 = np.random.rand(10000, 2)
def test(p1):
    return p1.sum()
%timeit test(p1)
Run Code Online (Sandbox Code Playgroud)

每回路17.9μs±236 ns(平均值±标准偏差,7次运行,每次10000次循环)

+:

p1 = np.random.rand(10000, 2)
def test(p1):
    return p1[:,0] + p1[:,1]
%timeit test(p1)
Run Code Online (Sandbox Code Playgroud)

每个环路15.8μs±328 ns(平均值±标准偏差,7次运行,每次100000次循环)

乘法:

p1 = np.random.rand(10000, 2)
def test(p1):
    return p1[:,0]*p1[:,1]
%timeit test(p1)
Run Code Online (Sandbox Code Playgroud)

每个环路15.7μs±701 ns(平均值±标准偏差,7次运行,每次10000次循环)

我没有看到任何理由.知道为什么吗?我的numpy版本是1.15.3.

编辑:10000000:

np.sum (with axis): 202 ms (5 x)
np.sum (without axis): 12 ms
+ : 46 ms (1 x)
* : 44.3 ms …
Run Code Online (Sandbox Code Playgroud)

python performance numpy

13
推荐指数
1
解决办法
753
查看次数

为weakref对象列表定义python类型提示

我还没有找到在使用弱引用时如何给出类型提示指示。

from typing import List
import weakref
class MyObject:
    def __init(self, foo)
        self.foo = foo
o1 = MyObject(1)
o2 = MyObject(2)
my_list: List[weakref] = [weakref.ref(o1), weakref.ref(o2)]
Run Code Online (Sandbox Code Playgroud)

有没有办法说my_listlistweakrefMyObject,是这样的:

my_list: List[Weakref[MyObject]] = [weakref.ref(o1), weakref.ref(o2)]
Run Code Online (Sandbox Code Playgroud)

?

python weak-references type-hinting

8
推荐指数
1
解决办法
1727
查看次数

Matlab-创建热图以可视化2D点数据的密度

给定一个N x N数组,我想生成一个热图,以这种方式可视化数据:

在此处输入图片说明

给定下面的源图像,我创建了一个人口稀少的NXN数组,其中包含下面列出的点。1000x800阵列中的90点。

在此处输入图片说明

在线研究如何生成这样的热图时,我偶然发现仅使用色图来获得令人失望的结果。

colormap('hot');   % set colormap
imagesc(points);        % draw image and scale colormap to values range
colorbar;  
Run Code Online (Sandbox Code Playgroud)

我的结果令人失望。

在此处输入图片说明

我还需要哪些其他选择才能使自己的形象与上一幅形象相似?

matlab heatmap

6
推荐指数
2
解决办法
6293
查看次数

DecisionTreeClassifier中两个叶子之间的距离

有没有办法计算决策树中两片叶子之间的距离.

按距离,我的意思是从一片叶子到另一片叶子的节点数量.

图形

例如,在此示例图中:

distance(leaf1, leaf2) == 1
distance(leaf1, leaf3) == 3
distance(leaf1, leaf4) == 4
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

python random-forest scikit-learn

4
推荐指数
1
解决办法
79
查看次数

在 QPlainTextEdit 中使用 tqdm 显示终端输出

我正在尝试找到一种方法,与其他打印一起获取 pyqt 应用程序中进度条的结果/演变,例如在 QPlainTextEdit 小部件中。

我面临的问题是,进度条可以使用一些更高级的回车符,甚至更高级的光标定位,而这些大多不被字符串支持。我已经尝试过io.StringIO,但\r仍保持字面意思。

import io
from tqdm import tqdm
s = io.StringIO()
for i in tqdm(range(3), file=s):    
    sleep(.1)
Run Code Online (Sandbox Code Playgroud)

输出:

s.getvalue()

Out[24]: '\n\r  0%|          | 0/3 [00:00<?, ?it/s]\x1b[A\n\r 33%|###3      | 1/3 [00:00<00:00,  9.99it/s]\x1b[A\n\r 67%|######6   | 2/3 [00:00<00:00,  9.98it/s]\x1b[A\n\r100%|##########| 3/3 [00:00<00:00,  9.98it/s]\x1b[A\n\x1b[A'
Run Code Online (Sandbox Code Playgroud)

翻译为:

print(s.getvalue())
  0%|          | 0/3 [00:00<?, ?it/s]
 33%|###3      | 1/3 [00:00<00:00,  9.99it/s]
 67%|######6   | 2/3 [00:00<00:00,  9.98it/s]
100%|##########| 3/3 [00:00<00:00,  9.98it/s]
Run Code Online (Sandbox Code Playgroud)

需要明确的是,在我的输出中,我不想每次 tqdm 更新一行,而只是当前状态,因为它将打印在命令行上。

知道如何做到这一点吗?谢谢!

python pyqt qplaintextedit pyqt5 tqdm

2
推荐指数
1
解决办法
2337
查看次数