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)


暂无数据
推荐帖子
0条评论
0条评论
0条评论