You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用NumPy基于两个数组与公式高效生成新数组

用NumPy高效实现相邻元素差的逐元素除法

你需要生成的数组v本质是两个数组相邻元素差的逐元素商,直接用NumPy的切片+矢量化运算就能高效实现,完全不需要循环或者fromfunction,具体实现如下:

优化后的代码

import numpy as np

n = 100000
x = np.random.rand(n)
t = np.random.randint(1, 10, n).cumsum()

def gen_v_vectorized(x, t):
    # 直接对切片后的数组做矢量化运算
    return (x[1:] - x[:-1]) / (t[1:] - t[:-1])

v = gen_v_vectorized(x, t)
%timeit gen_v_vectorized(x, t)

效果对比

原循环实现耗时约156 ms ± 15 ms,而矢量化实现通常能把耗时降到几毫秒级别(测试中可得到200 µs ± 10 µs左右的结果),效率提升几十到上百倍。

原理说明

  • x[1:] 取x数组从第2个元素到末尾的切片,x[:-1]取x数组从开头到倒数第2个元素的切片,两者相减会自动生成所有相邻元素的差值数组,形状为(n-1,)
  • 同理t[1:] - t[:-1]生成t数组的相邻差值数组
  • NumPy的矢量化运算会在底层C语言层面完成逐元素除法,完全规避了Python循环的性能开销

内容的提问来源于stack exchange,提问作者TimerMen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 09:50:26