2009-06-13 157 views

回答

1

Here's a forum post有一些你想要實現的代碼示例。

+0

儘管如此,這樣的位矩陣表現不佳。只是創建它將需要相當多的CPU和內存。 – 2009-06-13 11:51:07

2

或者只是使用Numerical Python如果你想在矩陣上做一些數學的東西(比如乘法......)。如果他們在內存中使用行主排序矩陣佈局我不能告訴你,但它在他們的文檔中得到掩蓋

+0

您可以修改numpy中的內部訂單。例如,創建未填充數組的空函數具有順序參數(C和Fortran的'C'和'F')。但是,默認佈局是行順序。 – 2009-06-13 11:53:17

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會給你在大多數平臺上)。第三行使用廣播,以便爲每行(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。