python 内存优化,Python:在numpy中定义矩阵的内存优化方法

import numpy as np

前言:

如果你厌倦阅读,请跳过序言,因为你已经知道了.

我最近在调试时遇到了问题.我写了’A = B = C = np.zeros([3,3]),我认为我刚刚定义了三个新的矩阵.我所做的事实上是不同的.我定义了一个新的矩阵(用零填充)和三个标签,每个标签都指向同一个矩阵.让我用以下示例说明:

>>> a = b = [0,0]

>>> a

[0,0]

>>> b

[0,0]

>>> # All good so far.

>>> a[0] = 1

>>> a

[1,0]

>>> # Nothing short of what one would expect...

>>> b

[1,0]

>>> # ... but since 'b' is assigned tot he same tuple, it changes as well.

问题:

好.现在我知道这没问题吧?当然我可以写:

A = np.zeros([3,3])

B = np.zeros([3,3])

C = np.zeros([3,3])

一切正常吗?这是对的,但我同样可以写:

A, B, C = np.zeros([3,3,3])

我认为第二个选项以更有效的方式使用内存,因为它定义了一个3x3x3张量,然后为每个层分别标记了A,B和C三个,而不是三个独立的矩阵,它们之间有可能的内存位.

您认为哪一个更好?

解决方法:

最重要的是,它闻起来像是过早优化.如果我们谈论的是少数几个矩阵,那么无论如何都无关紧要.如果我们正在谈论大量的矩阵,你就不太可能使用解包.

话虽如此,第二个选项涉及创建更大的底层存储,而第一个选项创建三个单独的存储.如果所有三个矩阵共享相同的生命周期,前者会更有效.后者更具可读性,并允许释放单个矩阵的内存.如果这种优化对你很重要,请测量.

标签:python,numpy,matrix,memory,memory-management

来源: https://codeday.me/bug/20190825/1720863.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值