numpy数组 - 多于和少于[重复]

Posted

技术标签:

【中文标题】numpy数组 - 多于和少于[重复]【英文标题】:numpy array - more and less than [duplicate] 【发布时间】:2018-02-25 09:12:45 【问题描述】:

我有一个 numpy 数组:(例如:)

>>> pixels
array([[233, 233, 233],
       [245, 245, 245],
       [251, 251, 251],
       [248, 248, 248],
       [248, 248, 248],
       [248, 248, 248],
       [248, 248, 248],
       [248, 248, 248],
       [248, 248, 248],
       [248, 248, 248]], dtype=uint8)

对于大于 230 且小于 240 的值(例如),我该怎么做才能获得布尔数组? 当我写

230<pixels<240

我得到这个按摩:

Traceback (most recent call last):
  File "<pyshell#78>", line 1, in <module>
    100<pixels<300
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

如果我写它也不起作用

230<pixels and 240>pixels

非常感谢!

【问题讨论】:

使用括号和&amp; 运算符。 按照@Divakar 的建议执行(pixels &gt; 230) &amp; (pixels &lt; 240) 【参考方案1】:

使用numpy.where 例程:

import numpy as np
a = np.array([[233, 233, 233],
       [245, 245, 245],
       [251, 251, 251],
       [248, 248, 248],
       [248, 248, 248],
       [248, 248, 248],
       [248, 248, 248],
       [248, 248, 248],
       [248, 248, 248],
       [248, 248, 248]], dtype='uint8')

b = np.where((a > 230) & (a < 240), True, False)
print(b)

输出:

[[ True  True  True]
 [False False False]
 [False False False]
 [False False False]
 [False False False]
 [False False False]
 [False False False]
 [False False False]
 [False False False]
 [False False False]]

【讨论】:

以上是关于numpy数组 - 多于和少于[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用重复索引递增 Numpy 数组

将 2d numpy 数组转换为列表列表 [重复]

如何使用索引和值迭代 1d NumPy 数组 [重复]

将熊猫系列转换为numpy数组[重复]

numpy - 返回数组中元素的第一个索引[重复]

NumPy数组中元素的索引[重复]