zoukankan      html  css  js  c++  java
  • np.zeros和np.zeros_like

    np.zeros类似于C中的calloc,预定义后随着使用而动态分配内存

    而np.zeros_like类似于C中的malloc+memset,在预定义时就直接初始化内存,之后直接使用内存,系统不再重新分配

    以下测试结果取自https://stackoverflow.com/questions/27464039/why-the-performance-difference-between-numpy-zeros-and-numpy-zeros-like

    This simple test with the memory_profile package supports the claim that zeros and empty allocate memory 'on-the-fly', while zeros_like allocates everything up front:

    N = (1000, 1000) 
    M = (slice(None, 500, None), slice(500, None, None))
    
    Line #    Mem usage    Increment   Line Contents
    ================================================
         2   17.699 MiB    0.000 MiB   @profile
         3                             def test1(N, M):
         4   17.699 MiB    0.000 MiB       print(N, M)
         5   17.699 MiB    0.000 MiB       x = np.zeros(N)   # no memory jump
         6   17.699 MiB    0.000 MiB       y = np.empty(N)
         7   25.230 MiB    7.531 MiB       z = np.zeros_like(x) # initial jump
         8   29.098 MiB    3.867 MiB       x[M] = 1     # jump on usage
         9   32.965 MiB    3.867 MiB       y[M] = 1
        10   32.965 MiB    0.000 MiB       z[M] = 1
        11   32.965 MiB    0.000 MiB       return x,y,z
    
  • 相关阅读:
    国际组织
    波段
    hhgis驱动
    百度地图格式
    气象数据格式
    汽车用传感器
    无线传感器网络
    【系统软件工程师面试】7. 消息队列
    【ToDo】存储设计概述
    Arthas: Java 动态追踪技术
  • 原文地址:https://www.cnblogs.com/J14nWe1/p/14581680.html
Copyright © 2011-2022 走看看