使用点 (x,y) 访问 Python 二维数组

5 投票
4 回答
67217 浏览
提问于 2025-04-16 14:31

我刚开始学习Python编程,想知道能不能用点或者坐标来访问Python中的二维数组。

比如说你有一个点:

point = (1,2)

然后你有一个矩阵,你可以用这个坐标来访问矩阵中的某个部分。

比如说:Matrix[point] = 这里是一个示例值

4 个回答

7

你可以定义一个N行M列的矩阵,然后像这样访问它:

N = M = 5
Matrix = {(x,y):0 for x in range(N) for y in range(M)}
point1 = (1, 2)
Matrix[point1] = 2
print( Matrix[(3, 2)] ) # prints 0
8

在Python中,可以使用嵌套列表这种数据结构来创建和引用二维矩阵。
不过,在矩阵代数中,坐标系统是(列,行);
而使用嵌套列表则创建了一个(行,列)的坐标系统

要在Python中定义一个二维矩阵,可以使用“嵌套列表”,也就是“列表的列表”这种数据结构。
需要注意的是,Python的“列表”数据结构相当于Java的“数组”数据结构

要引用坐标(列,行)处的矩阵值:

coordinate_value = matrix[row][column]


就像一维列表一样,索引是从0开始的,一直到n。

matrix = [
              ['a', 'b', 'c'],
              ['d', 'e', 'f', 'g'],
              ['h', 'i', 'j', 'k'],
          ]
print "value of row 0, column 2: " + matrix[0][2]
"the value of row 0, column 2 is: c"

使用场景

如果你打算进行大量的矩阵代数运算(比如特征向量、线性代数、矩阵变换等)——建议你学习numpy模块。
如果你在进行编码面试——嵌套列表是创建和处理二维矩阵的快捷方式。

祝好运!

10

大家都知道,NumPy这个库非常流行,它可以创建多维数组,并且支持用元组来进行索引,也就是可以用一组坐标来访问数组里的数据。

import numpy
a = numpy.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
print a[1, 2]
point = (1, 2)
print a[point]

如果不使用任何外部库,Python里是没有“二维数组”这个概念的。我们只能使用嵌套列表,像上面调用的numpy.array()那样。

撰写回答