如何在Python中获取矩阵?

1 投票
3 回答
697 浏览
提问于 2025-04-15 12:13

我想创建一个大小为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。

撰写回答