首页 > 解决方案 > 使用高级索引修改 numpy 数组时会创建什么副本?

问题描述

的高级索引的文档numpy说:

高级索引始终返回数据的副本(与返回视图的基本切片相反)。

我使用示例代码理解这一点

tmp = np.array([0,0,0,1,1,1])
new = tmp[tmp == 0]
new[1] = 5

原始数组tmp未修改。

但是,当我使用高级切片来修改数组时会发生什么?例如

tmp = np.array([0,0,0,12,12,12,4,5,4,4])
uni = np.unique(tmp)
for info in enumerate(uni):
    tmp[tmp == info[1]] = info[0]

显然,tmp在修改过程中,创建了什么副本?

标签: pythonarraysnumpy

解决方案


推荐阅读