如何根据值标记numpy数组?

时间:2019-05-25 12:39:14

标签: numpy

我有一个特定值的numpy数组([5,6,7,8,10,11,12,14]);我想将每个值标记为:

  1. 'N',如果值小于或等于10

  2. 如果值大于10,则
  3. 'Y'

我的输出将是一个具有以下值的数组/列表: ['N','N','N','N','N','Y','Y','Y']

我是python的新手,立即需要一个项目的解决方案。请帮助我。请不要给我负面意见,因为我再也不能问其他问题了。

2 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。以下是一些选项:

In [1]: import numpy

In [2]: x = numpy.array([5,6,7,8,10,11,12,14])

In [3]: x
Out[3]: array([ 5,  6,  7,  8, 10, 11, 12, 14])

In [4]: x > 10
Out[4]: array([False, False, False, False, False,  True,  True,  True], dtype=bool)

In [5]: ['Y' if y > 10 else 'N' for y in x]
Out[5]: ['N', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y']

In [6]: [{True: 'Y', False: 'N'}[y] for y in x > 10]
Out[6]: ['N', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y']

您也可以使用map或其他方式:)

答案 1 :(得分:0)

  1. for循环访问tmp列表;
  2. 在tmp列表中循环的每个元素,将首先通过if ...进行判断,如果if ...则进行匹配,然后在由list全面创建的新列表中输出'Y'。
  3. 如果...不匹配,则在综合列表创建的新列表中输出“ N”。

Use list comprehensive with sentence if ...else.. just like picture below: