首页   注册   登录

necomancer

V2EX 第 155048 号会员,加入于 2016-01-12 03:48:51 +08:00
necomancer 最近回复了
arch 默认 python->python3,所有依赖 python2 的包会自动指向 python2
10 天前
回复了 yalelynn 创建的主题 程序员 大家所在的公司会组织团建活动吗?
中科院……有……
11 天前
回复了 sunhk25 创建的主题 Python Python +mongodb:如何快速计算大量向量近似度
In [29]: a = np.random.random((200000,250))

In [30]: my_inner_prod(a,a)
Out[30]: array([1., 1., 1., ..., 1., 1., 1.])

In [31]: %timeit my_inner_prod(a,a)
49.3 ms ± 850 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

I7-3687u
11 天前
回复了 sunhk25 创建的主题 Python Python +mongodb:如何快速计算大量向量近似度
numpy 的 dot 和 einsum 都比较慢,你可以考虑用 numba 的 guvectorize
@guvectorize([(float64[:], float64[:], float64[:])],
'(n),(n)->()', target='parallel')
def my_inner_prod(a, b, ret):
tmp1 = tmp2 = tmp3 = 0
for i in range(a.shape[0]):
tmp1 += a[i] * b[i]
tmp2 += a[i] * a[i]
tmp3 += b[i] * b[i]
ret[0] = tmp1 / (tmp2 * tmp3) ** 0.5
这个是 cos(theta),如果不除以模量则只要 tmp1 就可以了
可以快很多。只要向量维度是对齐的,比如 (100000,250) . (100000,250) -> (100000,)
或者(100000,250) . (1,250) -> (100000,)
降维是不是可以考虑 PCA?
@noli 作为非数学科研人员,非数学方面高浮点计算力需求除了很多已经有人做好的开源 /商业实现(lammps, gromacs, gauss, amber, MS...),现在基本上是用 NumPy 了,而很多成名已久的老软件也开始 C++/C, CUDA 然后用 Python 做胶水这样,numpy array 作为“苦力”,这样在程序运行中很方便实时自己写东西进行处理。NumPy 的各种操作基于 MKL,效率还是很高的。我所知道的纯数学类用得比较多的可能是 Matlab 和 Mathematica,但可能是符号运算、各种群论图论拓扑之类的神仙操作比较多吧,干暴力浮点运算要求少,他们的神仙课题不太懂。至于 CUDA,如果不是要使劲搞一个 lammps,gromacs 体量的大作,numba 的 jit, vectorize, cuda.jit 和 cython 基本上非常够用。从好上手的角度上说,Python 确实最友好,各种格式的读写,和 C, Fortran (没错,科研党还有相当一大部分人用) 的接口全面,NumPy 的向量化操作也让代码很具有公式上的可读性,而且非数学并且有大量暴力浮点运算的专业而言,Python 的入门要比 Matlab, mathematica 之类的简单得多,至于 Julia,生态算硬伤。
@oblivious 作为科研党必须给个赞
@BiuBiuBiu Springer undergraduate mathematics series, GTM 是对应的 graduate mathematics textbooks
20 天前
回复了 chenstack 创建的主题 程序员 Windows Terminal (Preview) 试用感觉
@iEverX 赞!
21 天前
回复了 abcbuzhiming 创建的主题 数学 线性代数想认真学习的话该如何入手
我刚回复过另一个帖子:去看 SUMS 系列的 Linear algebra 和 Further Linear algebra,基本够用了。想更进一步去看 GTM 系列的线性代数。离散数学看 Rosen 的就行。速成的话看懂神马是厄密矩阵,本征值,本征值的几何意义,SVD 和对角化的区别,优化问题的应用和张量代数,去捅咕明白 numpy.einsum 这个函数,日常各种操作够用。有点基础了有本书叫《线性代数应该这样学》,水平很高。一般这书内容大致了解也就算了解线性代数了,能看通透那就很厉害了。
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4113 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 10ms · UTC 06:18 · PVG 14:18 · LAX 23:18 · JFK 02:18
♥ Do have faith in what you're doing.