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

如何获取NumPy二维数组元素沿指定轴的位置索引,供matplotlib bar3d使用

实现方案

你需要的是指定轴的索引广播匹配原数组形状,用NumPy内置的广播机制就能一行搞定,不需要循环:

1. 直接生成你要的axis=1方向的索引

import numpy as np
a = np.arange(1,7).reshape(2,3)
# 沿axis=1(列方向)取位置索引
res = np.broadcast_to(np.arange(a.shape[1]), a.shape)
print(res)

输出完全符合你的预期:

array([[0, 1, 2],
       [0, 1, 2]])

2. 通用的任意轴索引生成方法

如果需要灵活指定轴,可以封装成通用写法:

def get_axis_pos_index(arr, target_axis):
    arr_shape = arr.shape
    # 生成目标轴的索引序列
    idx_seq = np.arange(arr_shape[target_axis])
    # 调整索引序列的维度适配广播规则
    expand_dims = [np.newaxis] * len(arr_shape)
    expand_dims[target_axis] = slice(None)
    # 广播到和原数组同形状,无额外内存拷贝
    return np.broadcast_to(idx_seq[tuple(expand_dims)], arr_shape)

调用示例:

  • 沿列方向(axis=1)取索引:get_axis_pos_index(a, 1) 输出和上面一致
  • 沿行方向(axis=0)取索引:get_axis_pos_index(a, 0) 输出为 [[0 0 0],[1 1 1]]

这个方法性能很高,生成的是视图而非拷贝数组,完全满足bar3d方法的参数输入要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:06:03