我有一个像这样的NumPy数组:
a = np.arange(30)
我知道我可以使用例如花哨的索引来替换位于位置indices=[2,3,4]
的值:
a[indices] = 999
但是如何替换不在indices
中的位置的值呢?会是像下面这样的吗?
a[ not in indices ] = 888
发布于 2013-06-05 21:17:29
我不知道有什么干净利落的方法来做这样的事情:
mask = np.ones(a.shape,dtype=bool) #np.ones_like(a,dtype=bool)
mask[indices] = False
a[~mask] = 999
a[mask] = 888
当然,如果您更喜欢使用numpy数据类型,那么可以使用dtype=np.bool_
--输出没有任何区别。这只是一个偏好的问题。
发布于 2013-10-25 23:21:15
仅适用于一维阵列:
a = np.arange(30)
indices = [2, 3, 4]
ia = np.indices(a.shape)
not_indices = np.setxor1d(ia, indices)
a[not_indices] = 888
发布于 2017-03-12 17:20:08
只要克服类似的情况,这样解决:
a = np.arange(30)
indices=[2,3,4]
a[indices] = 999
not_in_indices = [x for x in range(len(a)) if x not in indices]
a[not_in_indices] = 888
https://stackoverflow.com/questions/16940895
复制相似问题