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

如何用纯NumPy(无循环)方式创建含ND索引与值的数组?

纯NumPy实现索引与值的组合数组

当然有纯NumPy的实现方式,完全不需要依赖循环或列表推导式,下面是两种简洁的实现方案:

方案一:分步实现(清晰易懂)

import numpy as np

a = np.arange(12).reshape(3, 4)
# 生成对应维度的索引网格
indices = np.indices(a.shape)
# 将索引网格转换为每行对应一个元素索引的二维数组
flat_indices = indices.reshape(len(indices), -1).T
# 将原数组拉平为列向量
flat_values = a.reshape(-1, 1)
# 横向拼接索引与值
b = np.hstack((flat_indices, flat_values))
print(b)

方案二:一行式简洁实现

import numpy as np

a = np.arange(12).reshape(3, 4)
b = np.column_stack(np.indices(a.shape) + (a,))
print(b)

输出结果(与原实现一致)

[[ 0  0  0]
 [ 0  1  1]
 [ 0  2  2]
 [ 0  3  3]
 [ 1  0  4]
 [ 1  1  5]
 [ 1  2  6]
 [ 1  3  7]
 [ 2  0  8]
 [ 2  1  9]
 [ 2  2 10]
 [ 2  3 11]]

原理说明

  • np.indices(a.shape):生成与原数组维度匹配的索引网格,比如二维数组会返回两个形状为(3,4)的数组,分别对应每个元素的行索引和列索引。
  • np.column_stack:将多个一维/二维数组按列拼接,自动将高维数组拉平为一维后组合,最终得到每行对应一个元素的「索引+值」结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:22:41