Numpy 数组切片的views and copy

检查发现自己代码中的bug是由如下原因导致,

1. numpy数组的切片是views而不是copy

2. += 符号没有copy新的对象,直接覆盖原地址,类似使用pandas的时候设置inplace=True

我下面给出一个示例代码以及代码的输出结果,以后写的时候需要注意。

import numpy as np


a = np.array([1, 2, 3, 4, 5])
b = a[2:4]
print("views of a[2:4]", b)
b += 10
print("b is changed to", b)
print("a is changed to", a)

b = b + 10
print("b is new object. ", b)
print(f"a is not changed. {a}")

输出结果:
views of a[2:4] [3 4]
b is changed to [13 14]
a is changed to [ 1  2 13 14  5]
b is new object.  [23 24]
a is not changed. [ 1  2 13 14  5]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值