作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一些代码尝试在另一个指定的索引处查找数组的内容,这些索引可能指定超出前一个数组范围的索引。
input = np.arange(0, 5)
indices = np.array([0, 1, 2, 99])
我想做的是: 打印输入[索引]并得到 [0 1 2]
但这会产生一个异常(正如预期的那样):
IndexError: index 99 out of bounds 0<=index<5
所以我想我可以使用掩码数组来隐藏越界索引:
indices = np.ma.masked_greater_equal(indices, 5)
但仍然:
>print input[indices]
IndexError: index 99 out of bounds 0<=index<5
虽然:
>np.max(indices)
2
所以我必须首先填充屏蔽数组,这很烦人,因为我不知道我可以使用什么填充值来不为那些超出范围的索引选择任何索引:
print input[np.ma.filled(indices, 0)]
[0 1 2 0]
所以我的问题是:如何有效地使用 numpy 从数组中安全地选择索引而不超出输入数组的范围?
最佳答案
如果不使用掩码数组,您可以像这样删除大于或等于 5 的索引:
print input[indices[indices<5]]
编辑:请注意,如果您还想丢弃负索引,您可以这样写:
print input[indices[(0 <= indices) & (indices < 5)]]
关于python - 在 numpy 中使用掩码数组进行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3854665/
我是一名优秀的程序员,十分优秀!