numpy.where 根据条件设置数组

Python 中图像表示为 numpy 数组 numpy.ndarray
,处理图像的时候想挑出特殊数值,可以用 np.where 实现,格式如下:
np.where(condition[, x, y]),会将满足条件的设为 x,不满足的设为 y,当然也可以设置 x,y,此时该函数相当于 np.asarray(condition).nonzero()。如果是1维数组,则相当于:

[xv if c else yv  for c, xv, yv in zip(condition, x, y)]

示例:
1D:

a = np.arange(10)
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.where(a < 5, a, 10*a)
# array([ 0,  1,  2,  3,  4, 50, 60, 70, 80, 90])

2D:

# x, y 维度与 condition 相同
np.where([[True, False], [True, True]], [[1, 2], [3, 4]], [[9, 8], [7, 6]])
# array([[1, 8], [3, 4]])
# x, y 维度与 condition 不同
a = np.array([[0, 1, 2], [0, 2, 4], [0, 3, 6]])
np.where(a < 4, a, -1)  # -1 将广播(broadcast)
# array([[0, 1, 2], [0, 2, -1], [0, 3, -1]])
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础篇NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(...
    oyan99阅读 5,198评论 0 18
  • 该内容来源于:https://blog.csdn.net/cxmscb/article/details/54583...
    Sper_CL阅读 1,524评论 0 21
  • 一、numpy概述 numpy(Numerical Python)提供了python对多维数组对象的支持:ndar...
    L_steven的猫阅读 3,528评论 1 24
  • import numpy as np 创建ndarray data1 = [6,7.5, 8, 0, 1]arr1...
    陆文斌阅读 749评论 0 1
  • 先决条件 在阅读这个教程之前,你多少需要知道点python。如果你想从新回忆下,请看看Python Tutoria...
    舒map阅读 2,630评论 1 13