如何获取二维数组中各元素的x、y坐标并生成指定格式数组
解决方案
要实现需求,你可以利用NumPy的索引生成工具快速获取每个元素的行、列坐标,再和原数组元素拼接成目标格式:
import numpy as np arr = np.arange(4) arr_2d = arr.reshape(2,2) # 生成与原数组同形状的行、列坐标矩阵 rows, cols = np.indices(arr_2d.shape) # 将原数组、行坐标、列坐标都扁平化后按列拼接 full_array = np.column_stack((arr_2d.flatten(), rows.flatten(), cols.flatten())) print(full_array)
运行后输出:
[[0 0 0] [1 0 1] [2 1 0] [3 1 1]]
原理说明
np.indices(arr_2d.shape)会生成两个矩阵,分别对应原数组每个位置的行索引和列索引,比如对于2x2的数组,rows是[[0,0],[1,1]],cols是[[0,1],[0,1]]。flatten()把二维结构转为一维,确保三个数组长度一致。column_stack()将三个一维数组按列组合,形成每行包含「元素值、行坐标、列坐标」的二维数组。
你也可以用np.meshgrid实现同样效果,代码如下:
x, y = np.meshgrid(np.arange(arr_2d.shape[1]), np.arange(arr_2d.shape[0])) full_array = np.column_stack((arr_2d.flatten(), x.flatten(), y.flatten()))
内容的提问来源于stack exchange,提问作者Caesar
相关产品推荐
相关产品推荐

