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

如何使用Numpy无循环实现数组a[i+j]到矩阵A[i,j]的映射?

实现方案

完全可以通过Numpy的向量化操作实现,无需显式编写for循环,运行效率远高于嵌套循环实现,尤其适合大尺寸矩阵的生成场景。

实现的核心逻辑是利用Numpy的广播机制直接生成索引矩阵,再通过索引批量取值得到目标矩阵,示例代码如下:

import numpy as np

a = np.random.rand(3)
# 定义目标矩阵的行数m、列数n
m, n = 2, 2
# 生成对应维度的行索引矩阵i和列索引矩阵j
i, j = np.indices((m, n))
# 直接按规则索引数组a得到矩阵A
A = a[i + j]

如果你的Numpy版本 >= 1.20.0,也可以用滑动窗口接口实现更高的内存效率,代码如下:

A = np.lib.stride_tricks.sliding_window_view(a, window_shape=n)[:m]

注意事项

两种实现都要求数组a的长度至少为m + n - 1,避免出现索引越界问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:45:04