如何用自身坐标填充numpy nr×nc整数数组?
生成元素为坐标二元组的NumPy数组
方法一:嵌套列表推导式
你可以用嵌套列表推导式先生成包含坐标二元组的二维列表,再转换为NumPy数组:
import numpy as np nr, nc = 3, 4 # 替换为你的行数和列数 # 外层遍历行索引i,内层遍历列索引j,生成每个位置的坐标二元组 coord_list = [[(i, j) for j in range(nc)] for i in range(nr)] # 转换为NumPy数组 coord_array = np.array(coord_list) # 打印结果 print(coord_array)
运行后输出(以3×4为例):
[[(0, 0) (0, 1) (0, 2) (0, 3)] [(1, 0) (1, 1) (1, 2) (1, 3)] [(2, 0) (2, 1) (2, 2) (2, 3)]]
方法二:NumPy原生高效实现
如果处理大数组,列表推导式效率较低,推荐用NumPy的indices方法直接生成索引矩阵,再转换为二元组格式:
import numpy as np nr, nc = 3, 4 # 生成行、列索引矩阵 rows, cols = np.indices((nr, nc)) # 合并为坐标数组(每个元素是[i,j]形式的数组) coord_array = np.dstack((rows, cols)) # 转换为二元组格式 coord_array_tuple = np.array([tuple(pair) for pair in coord_array.reshape(-1, 2)]).reshape(nr, nc) print(coord_array_tuple)
这个方法利用NumPy的向量化操作,比列表推导式更适合大规模数据。
内容的提问来源于stack exchange,提问作者Mark Lavin
相关产品推荐
相关产品推荐

