numpy ndarray 多维数组的内存管理

1. ndarray.flags:内存布局(layout)

https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.flags.html

>> x = np.random.rand(2, 4)
>> x.flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False
  • C_CONTIGUOUS:C-style

  • F_CONTIGUOUS:Fortran-style

  • OWNDATA:拥有自己的数据还是从别的对象借来

    >> y = x[1, :]
    >> y.flags['OWNDATA']
    False
    

2. ndarray.__array_interface__:内存地址

>> x = np.random.rand(2, 4)
>> x.dtype
dtype('float64')

>> x.__array_interface__['data']
(140245892607552, False)
>> x[0].__array_interface__['data]
(140245892607552, False)
>> x[0, :].__array_interface__['data']
(140245892607552, False)

>> x[1].__array_interface__['data']
(140245892607584, False)
			# 140245892607584 = 140245892607552 + 4*8
>> x[1, :].__array_interface__['data']
(140245892607584, False)

以上无论是 xx[0] 还是 x[0, :],都是 numpy.ndarray 类型,对于 x[0, 0] 则是普通的 numpy.float64,其地址在另外的地址空间中:

>> x[0, 0].__array_interface__['data']
(140245864608576, False)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值