python - 如何在迭代器中屏蔽除第 n 个元素之外的每个元素?

标签 python numpy mask

我正在尝试创建一个掩码数组(或至少填充 NaN),该数组仅提供第 n 个(示例中的第 8 个)位置的值。该数组的长度应与原始数组的长度相同。

有没有一种不那么荒谬的方法来做到这一点?

b = np.array([[i for i in 7*[np.nan] + [val]] for val in a[::8]]).flatten()[7:]

最佳答案

一种方法是使用切片分配:

>>> a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
       34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
       51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63])
>>> b = numpy.array([numpy.NaN] * len(a))
>>> b[::8] = a[::8]
>>> b
array([  0.,  nan,  nan,  nan,  nan,  nan,  nan,  nan,   8.,  nan,  nan,
        nan,  nan,  nan,  nan,  nan,  16.,  nan,  nan,  nan,  nan,  nan,
        nan,  nan,  24.,  nan,  nan,  nan,  nan,  nan,  nan,  nan,  32.,
        nan,  nan,  nan,  nan,  nan,  nan,  nan,  40.,  nan,  nan,  nan,
        nan,  nan,  nan,  nan,  48.,  nan,  nan,  nan,  nan,  nan,  nan,
        nan,  56.,  nan,  nan,  nan,  nan,  nan,  nan,  nan])

关于python - 如何在迭代器中屏蔽除第 n 个元素之外的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26318070/

相关文章:

python - 将列表转换并填充到 numpy 数组

html - 如何使用 SVG 屏蔽图像并在屏蔽部分周围添加颜色描边?

python - 是否可以列出所有被阻止的 Tornado 协程

压缩对象上的 python map()

Python 授予读/写文件的完全权限

python - 填充蒙版框架中的孔/ block

图像预处理 : contour expansion

python - Celery 任务不起作用

python - OpenCV,Python : How to use mask parameter in ORB feature detector

python - Cython:缓冲区类型不匹配,预期为 'int' 但得到了 'long'