首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中创建一个非常大的二维矩阵?

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

Stack Overflow用户
提问于 2016-02-05 20:45:46
回答 3查看 1.5K关注 0票数 0

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

我试过这个:

代码语言:javascript
复制
value = 5
a = [0] * value
b = [a] * value
b[2][3] = 5
print b

这给了我

代码语言:javascript
复制
[[0, 0, 0, 5, 0], [0, 0, 0, 5, 0], [0, 0, 0, 5, 0], [0, 0, 0, 5, 0], [0, 0, 0, 5, 0]]

我知道名单b只是5次列表的参考。是否有任何方法来创建这个矩阵,使修改一个元素不会影响其他元素?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-05 20:50:51

如果您想使用numpy,有一个内置方法用于此:

代码语言:javascript
复制
>>> 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.]])

如果不是,你可以使用列表理解,尽管它会很慢。

代码语言:javascript
复制
[[0 for r in range(10)] for c in range(10)] 

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

票数 1
EN

Stack Overflow用户

发布于 2016-02-05 20:48:52

对于一个稀疏矩阵来说,效率很低,但是您可以使用:

代码语言:javascript
复制
>>> mat = [[0 for x in range(2)] for x in range(3)]
>>> mat
[[0, 0], [0, 0], [0, 0]]

(考虑使用scipy.sparse )

票数 1
EN

Stack Overflow用户

发布于 2016-02-05 20:50:57

我的解决方案:

代码语言:javascript
复制
value = 5
b = [[0 for x in range(value)] for y in range(value)]
b[2][3] = 5
print( b)

结果:

代码语言:javascript
复制
[[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]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35233185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档