如何在python中创建一个非常大的二维矩阵?

时间:2016-02-05 20:45:47

标签: python python-2.7 matrix multidimensional-array sparse-matrix

我需要一个包含50,000行和50,000列的二维矩阵,每个元素设置为0,同时在内存上很容易。

我试过了:

$unencodedData = "{$string}/{$timestamp}/{$rand}";

哪个给了我

value = 5
a = [0] * value
b = [a] * value
b[2][3] = 5
print b

我知道列表b只是列出5次的引用。有没有办法创建这个矩阵,以便修改一个元素不会影响其他元素?

3 个答案:

答案 0 :(得分:1)

enter image description here的效率非常低,但您可以使用:

>>> mat = [[0 for x in range(2)] for x in range(3)]
>>> mat
[[0, 0], [0, 0], [0, 0]]

(考虑改为使用sparse matrix

答案 1 :(得分:1)

如果您想使用numpy,可以使用内置方法:

>>> np.zeros((10,10))
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

如果没有,你可以使用列表推导,虽然它会很慢。

[[0 for r in range(10)] for c in range(10)] 

请注意存在稀疏矩阵的更有效方法,例如使用scipy。

答案 2 :(得分:0)

我的解决方案:

value = 5
b = [[0 for x in range(value)] for y in range(value)]
b[2][3] = 5
print( b)

结果:

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 5, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]