如何在python中使用矩阵?
答
或者只是使用Numerical Python如果你想在矩阵上做一些数学的东西(比如乘法......)。如果他们在内存中使用行主排序矩阵布局我不能告诉你,但它在他们的文档中得到掩盖
+0
您可以修改numpy中的内部订单。例如,创建未填充数组的空函数具有顺序参数(C和Fortran的'C'和'F')。但是,默认布局是行顺序。 – 2009-06-13 11:53:17
答
我认为你需要使用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会给你在大多数平台上)。第三行使用广播,以便为每行(a [0],a [1],... a [1233])分配np.linspace行的值(它给出了[1,...] ...,5678])。如果你想F储存,即列为主:
a = np.empty((1234, 4567), dtype=np.int, order='F')
...
遗嘱需要的内存只有一个很小的量超过C中的数组,并计算矩阵至少,数组的索引功能要好得多比python列表。
nitpick:numeric是Python的旧数字包的名称 - 推荐的名称是numpy。
尽管如此,这样的位矩阵表现不佳。只是创建它将需要相当多的CPU和内存。 – 2009-06-13 11:51:07