numpy-bool索引 + index索引-无法对原容器赋值问题

发布时间 2023-06-28 16:36:50作者: GavinSimons

相关文章:

1、https://blog.csdn.net/qq_41035283/article/details/127821222

2、docs.scipy.org/doc/numpy/reference/

相关结论:

1、基础索引->view,高级索引->copy

2、判断view与copy的方式:ndarray.base, 如果为None则是copy,如果为其他则是view

3、先基础索引再高级索引,原数组被改变;先高级索引再低级索引,原数组不变

4、广播不适用于布尔数组

解决方案:

使用np.ix_,使得bool索引转变为index索引,然后对index索引再进行index索引。

例如:

 

import numpy as np

ndarray = np.array([0,1,2,3,4,np.nan,np.nan,7,8,9])
ndarray_valid_case = ~np.isnan(ndarray)
ndarray_valid_index = np.ix_(ndarray_valid_case)[0]
ndarray[ndarray_valid_index[-4:]] = 0