我注意到,非常紧张,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) 我还没有找到在使用弱引用时如何给出类型提示指示。
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_list是list的weakref到MyObject,是这样的:
my_list: List[Weakref[MyObject]] = [weakref.ref(o1), weakref.ref(o2)]
Run Code Online (Sandbox Code Playgroud)
?
给定一个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)
我的结果令人失望。
我还需要哪些其他选择才能使自己的形象与上一幅形象相似?
有没有办法计算决策树中两片叶子之间的距离.
按距离,我的意思是从一片叶子到另一片叶子的节点数量.
例如,在此示例图中:
distance(leaf1, leaf2) == 1
distance(leaf1, leaf3) == 3
distance(leaf1, leaf4) == 4
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我正在尝试找到一种方法,与其他打印一起获取 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 ×4
heatmap ×1
matlab ×1
numpy ×1
performance ×1
pyqt ×1
pyqt5 ×1
scikit-learn ×1
tqdm ×1
type-hinting ×1