我是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中做同样的事情?我读了一下,但对元组和类似的东西感到困惑
如果你能指出一个类似的例子那就很棒
感谢
答案 0 :(得分: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
,这可能是你自己想写的(我不知道应该做什么 - 不是“读取并返回下一个数字“因为它需要一个神秘的论点,但是,那么呢?”。
答案 1 :(得分:2)
这取决于您的文件格式,但请查看:
http://www.scipy.org/Tentative_NumPy_Tutorial 和 http://docs.scipy.org/doc/scipy/reference/tutorial/io.html
答案 2 :(得分:1)
您可能希望使用numpy并使用内置函数来使用I / O,特别是loadtxt。
http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html
处理I / O有很多上瘾功能:
答案 3 :(得分:0)
一个简单的例子是:
data = []
with open(_filename_, 'r') as f:
for line in f:
data.append([int(x) for x in line.split()])
答案 4 :(得分:0)
矩阵是二维结构。在普通Python中,矩阵最自然的表示形式是列表。
因此,您可以将行矩阵写为:
[[1, 2, 3, 4]]
并将列矩阵写为:
[[1],
[2],
[3],
[4]]
这也很好地扩展到 m x n 矩阵:
[[10, 20],
[30, 40],
[50, 60]]
有关如何在纯Python中开发完整矩阵包的示例,请参阅matfunc.py。 它的文档是here。
以下是使用list-of-lists表示在普通python中进行矩阵乘法的一个经过验证的例子:
>>> from pprint import pprint
>>> def mmul(A, B):
nr_a, nc_a = len(A), len(A[0])
nr_b, nc_b = len(B), len(B[0])
if nc_a != nr_b:
raise ValueError('Mismatched rows and columns')
return [[sum(A[i][k] * B[k][j] for k in range(nc_a))
for j in range(nc_b)] for i in range(nr_a)]
>>> A = [[1, 2, 3, 4]]
>>> B = [[1],
[2],
[3],
[4]]
>>> pprint(mmul(A, B))
[[30]]
>>> pprint(mmul(B, A), width=20)
[[1, 2, 3, 4],
[2, 4, 6, 8],
[3, 6, 9, 12],
[4, 8, 12, 16]]
正如另一位受访者所提到的,如果你认真对待矩阵工作,你应该安装numpy,它直接支持许多矩阵操作:
答案 5 :(得分:0)
一种将表单中的列表扩展为像矩阵一样工作的方法。我已经通过python中的其他矩阵代码,所有人都使用理解来首先初始化所需大小的列表,然后更新值(这需要更多的时间)。
让r代表行,c代表列
r = input('Enter row size: ')
c = input('Enter column size: ')
m = []
for i in range(r):
m.append([])
for j in range(c):
m[i].append(input())
for i in m:
print i
在这里,您可以输入“C”或等效语言中的矩阵元素。希望这可以帮助某人实现矩阵的不同观点。