首页   注册   登录
 necomancer 最近的时间轴更新

necomancer

V2EX 第 155048 号会员,加入于 2016-01-12 03:48:51 +08:00
necomancer 最近回复了
6 天前
回复了 songdg 创建的主题 Python 求解析一下这个函数的原理
可以考虑 NFS 系统吗?相当于三个服务器共用硬盘。
10 天前
回复了 Mohanson 创建的主题 Python 最近在看冈萨雷斯的数字图像处理
厉害
不客气。我很久没鼓捣过这玩意儿了,我记得 numba 的各路 jit 处理这个问题是很嗨的,你要是经常遇到这种问题,去看看 numba 吧,有 GPU 加速更开心 ^_^

In [1]: from numba import guvectorize, float64

In [2]: a = np.random.random((100000,2,2))

In [3]: b = np.random.random((100000,2,2))

In [4]: c = np.matmul(a, b)

In [5]: d = np.array([np.dot(i,j) for i,j in zip(a,b)])

In [6]: @guvectorize([(float64[:,:],float64[:,:], float64[:,:])], '(n,m),(m,n)->(n,n)', target='parallel') #target='cpu','gpu'
...: def mydot(a,b,res):
...: for i in range(res.shape[0]):
...: for j in range(res.shape[1]):
...: tmp = 0.
...: for k in range(a.shape[1]):
...: tmp += a[i, k] * b[k, j]
...: res[i, j] = tmp
...:

In [7]: e = mydot(a, b)

In [8]: np.allclose(c,e)
Out[8]: True

In [9]: np.allclose(c,d)
Out[9]: True

In [10]: %timeit mydot(a,b)
234 µs ± 4.02 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [11]: %timeit np.array(list(map(np.dot, a, b)))
210 ms ± 2.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [12]: %timeit np.array([np.dot(i,j) for i, j in zip(a,b)])
235 ms ± 5.87 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [13]: %timeit np.matmul(a,b)
41.1 ms ± 90 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
加上 vectorize 的:

In [28]: def mydot(a, b):
...: return np.dot(a,b)
...:
...:

In [29]:

In [29]: vmydot = np.vectorize(mydot, signature='(n,m),(m,n)->(n,n)')

In [30]: e = vmydot(a, b)

In [31]: np.allclose(d,e)
Out[31]: True

In [32]: %timeit vmydot(a,b)
467 ms ± 4.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
matmul(...)
matmul(a, b, out=None)

Matrix product of two arrays.

The behavior depends on the arguments in the following way.

- If both arguments are 2-D they are multiplied like conventional
matrices.
- If either argument is N-D, N > 2, it is treated as a stack of
matrices residing in the last two indexes and broadcast accordingly.
...

所以 np.matmul(m1, m2) 就行了。

In [1]: a = np.random.random((100000,2,2))

In [2]: b = np.random.random((100000,2,2))

In [3]: c = np.matmul(a, b)

In [4]: d = np.array([np.dot(i,j) for i,j in zip(a,b)])

In [5]: np.allclose(c,d)
Out[5]: True

In [6]: %timeit np.matmul(a,b)
41.1 ms ± 81.6 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [7]: %timeit np.array([np.dot(i,j) for i, j in zip(a,b)])
231 ms ± 5.81 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
27 天前
回复了 arvincaoo 创建的主题 MySQL 毫秒级的数据密度,做曲线图.数据源过滤
不过 histogram 函数应该可以…… histogram(time, bins=xxx, range=(xx, xx), weights=data),调整好 range 和 bins 就可以了吧。
27 天前
回复了 arvincaoo 创建的主题 MySQL 毫秒级的数据密度,做曲线图.数据源过滤
我说错了……这个不叫 histogram …… 我的意思就是按天把数据加起来……横轴的时间就变成天,这样可以降低条数,但保留趋势
27 天前
回复了 arvincaoo 创建的主题 MySQL 毫秒级的数据密度,做曲线图.数据源过滤
histogram? 比如按天 histogram 然后输出就成了每天数据的总和
newton mail
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2205 人在线   最高记录 3762   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 9ms · UTC 13:14 · PVG 21:14 · LAX 06:14 · JFK 09:14
♥ Do have faith in what you're doing.
沪ICP备16043287号-1