numpy-bool索引 + index索引-无法对原容器赋值问题
相关文章:
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