我想创建一个大小为1234 * 5678的矩阵,它在行主要顺序中填充1到5678?> .. !!
答案 0 :(得分:6)
我认为你需要使用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存储,那就是专栏:
a = np.empty((1234, 4567), dtype=np.int, order='F')
...
矩阵a比C中的数组只占用少量内存,至少对于计算,数组的索引功能要比python列表好得多。
一个nitpick:numeric是python的旧数字包的名称 - 推荐的名称是numpy。
答案 1 :(得分:2)
或者只是使用Numerical Python如果你想在矩阵上做一些数学的东西(比如乘法,......)。如果他们在内存中使用行主要顺序进行矩阵布局,我无法告诉你,但它会在他们的文档中被覆盖
答案 2 :(得分:1)
Here's a forum post,其中包含您尝试实现的一些代码示例。