如何在python中使用矩阵?

问题描述:

我想创建一个大小为1234 * 5678的矩阵,并且它以1到5678的行次序填充?> .. !!如何在python中使用矩阵?

Here's a forum post有一些你想要实现的代码示例。

+0

尽管如此,这样的位矩阵表现不佳。只是创建它将需要相当多的CPU和内存。 – 2009-06-13 11:51:07

或者只是使用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。