【发布时间】:2021-10-17 06:28:08
【问题描述】:
我有一个数组a。
rnd = np.random.default_rng(12345)
a = rnd.uniform(0, -50, 5)
# array([-11.36680112, -15.83791699, -39.86827287, -33.81273354,
# -19.55547753])
我想找出数组与同一数组中每个元素的差异。示例输出为:
[array([ 0. , 4.47111586, 28.50147174, 22.44593241, 8.18867641]),
array([-4.47111586, 0. , 24.03035588, 17.97481655, 3.71756054]),
array([-28.50147174, -24.03035588, 0. , -6.05553933,
-20.31279534]),
array([-22.44593241, -17.97481655, 6.05553933, 0. ,
-14.25725601]),
array([-8.18867641, -3.71756054, 20.31279534, 14.25725601, 0. ])]
我的第一种方法是使用列表理解 [i - a for i in a]。但是,由于我的原始数组 a 非常庞大,并且我有数千个这样的 as 我需要执行相同的操作,因此整个过程变得非常缓慢并且内存不足,以至于 jupyter 内核死亡。
有什么方法可以加快速度吗?
【问题讨论】:
-
使用 numba 查看我的答案,而 numpy 非常适合较小的数组,但在较大的数组上会减慢矢量运算
标签: python arrays performance numpy