我想创建一个大小为 1234*5678 的矩阵,并按行主要顺序填充 1 到 5678?>..!!
请您参考如下方法:
我认为您将需要使用 numpy 来有效地保存如此大的矩阵,而不仅仅是计算。你有 ~5e6 个 4/8 字节的项目意味着在纯 C 中已经有 20/40 Mb,在没有有效数据结构的 python 中是这个数的好几倍(行列表,每行一个列表)。
现在,关于你的问题:
import numpy as np
a = np.empty((1234, 5678), dtype=np.int)
a[:] = np.linspace(1, 5678, 5678)
您首先创建一个具有请求大小的数组,类型为 int(我假设您知道您需要 4 字节整数,这是 np.int 在大多数平台上会为您提供的)。第 3 行使用广播,以便为每一行 (a[0], a[1], ... a[1233]) 分配 np.linspace 行的值(它为您提供 [1, .. ..., 5678])。如果要F存储,那就是column major:
a = np.empty((1234, 4567), dtype=np.int, order='F')
...
矩阵 a will 仅比 C 中的数组多占用少量内存,至少在计算方面,数组的索引能力比 python 列表好得多。
吹毛求疵:numeric 是 python 的旧数字包的名称 - 推荐名称是 numpy。
