如何在Python中获取矩阵?
我想创建一个大小为1234行乘5678列的矩阵,并且这个矩阵要按照行的顺序填充,从1到5678的数字。怎么做呢?
3 个回答
1
这里有一个论坛帖子,里面有一些代码示例,可以帮助你实现你想要的功能。
2
如果你想在矩阵上做一些数学运算,比如乘法什么的,可以直接使用 NumPy。至于它们在内存中是如何存储矩阵的,我不能确定是不是按行优先的方式,不过这个在它们的文档里有说明。
6
我觉得你需要用numpy来高效地处理这么大的矩阵,不仅仅是为了计算。你有大约500万项,每项占4或8个字节,这在纯C语言中已经是20到40兆了,而在Python中,如果没有高效的数据结构(比如每行是一个列表的列表),那占用的内存会更大。
关于你的问题:
import numpy as np
a = np.empty((1234, 5678), dtype=np.int)
a[:] = np.linspace(1, 5678, 5678)
你首先要创建一个指定大小的数组,类型是int(我假设你知道你需要的是4字节的整数,这在大多数平台上np.int会给你这个类型)。第三行使用了广播功能,这样每一行(a[0], a[1], ... a[1233])就会被赋值为np.linspace那一行的值(它会给你一个从1到5678的数组)。如果你想要F存储方式,那就是列优先:
a = np.empty((1234, 4567), dtype=np.int, order='F')
...
这个矩阵a占用的内存比C语言中的数组多不了多少,而且在计算方面,数组的索引能力比Python的列表要好得多。
补充一下:numeric是Python以前的一个数值计算包,推荐使用的名字是numpy。