热线电话:13121318867

登录
2019-04-10 阅读量: 574
非副本视图的子数组

关于数组切片有一点很重要也非常有用,那就是数组切片返回的是 数组数据的视图,而不是数值数据的副本。这一点也是 NumPy 数 组切片和 Python 列表切片的不同之处:在 Python 列表中,切片是 值的副本。例如此前示例中的那个二维数组:

In[1]: print(x2)

[[12 5 2 4]
[ 7 6 8 8]
[ 1 6 7 7]]

从中抽取一个 2×2 的子数组:

In[2]: x2_sub = x2[:2, :2]
print(x2_sub)

[[12 5]
[ 7 6]]

现在如果修改这个子数组,将会看到原始数组也被修改了!结果如下所示:

In[3]: x2_sub[0, 0] = 99
print(x2_sub)

[[99 5]
[ 7 6]]

In[4]: print(x2)
[[99 5 2 4]
[ 7 6 8 8]
[ 1 6 7 7]]

这种默认的处理方式实际上非常有用:它意味着在处理非常大的数据集时,可以获取或处理这些数据集的片段,而不用复制底层的数据缓存。

0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子