Python中的矩阵

2 投票
6 回答
1490 浏览
提问于 2025-04-15 23:42

我刚开始学习Python,想从一个文件里读取数字,然后把它们存储在一个矩阵里,就像我在Fortran或C语言中那样。

for i
  for j
    data[i][j][0]=read(0)
    data[i][j][1]=read(1)
    data[i][j][2]=read(2)
...
...

我该怎么在Python中做到这一点呢?我看了一些资料,但对元组和类似的东西有点困惑。

如果你能给我指个类似的例子,那就太好了。

谢谢!

6 个回答

1

你可能想使用numpy这个库,并利用它里面的一个内置函数来处理输入输出,特别是loadtxt这个函数。

http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html

还有很多其他的函数可以用来处理输入输出:

http://docs.scipy.org/doc/numpy/reference/routines.io.html

2

这要看你的文件格式,不过你可以看看以下链接:

这个链接这个链接

4

Python本身不支持多维数组,不过你可以通过流行的numpy这个第三方库来实现。如果你想避免使用第三方库,那么在Python中,你可以使用“列表的列表的列表”的方式来模拟多维数组(每个“列表”都是一个一维的“向量”,可以存放任何类型的元素)。

举个例子:

data = [ [ [0 for i in range(4)] for j in range(5)] for k in range(6)]

这段代码创建了一个包含6个元素的列表,每个元素又是一个包含5个元素的列表,而这些元素又是包含4个0的列表——也就是说,这就是一个6 x 5 x 4的“3D矩阵”,你可以按照自己的需求来访问它。

for i in range(6):
  for j in range(5):
    data[i][j][0]=read(0)
    data[i][j][1]=read(1)
    data[i][j][2]=read(2)

接下来,你可以用一个神秘的函数read来初始化每个最内层子列表中的前3个元素,听起来你可能想自己写这个函数(我也不太清楚这个函数具体要做什么——并不是“读取并返回下一个数字”,因为它需要一个神秘的参数,那它到底是干嘛的呢?)。

撰写回答