按量级改变索引的值



我试图使一个灵活的算法,将采取值50 × 50数组(其中包含像素值从适合的图像),如果它们太高。它们太高了(python)。我要做的第一件事是:

file = pf.open('/Users/Vofun/desktop/file.fits')
data = np.array(file[0].data)
for pixellist in range (len(data)):
        if data[pixellist] > 50:
           data[pixellist] = 10:

当然,这行不通,我得到

ValueError:包含多个元素的数组的真值是不明确的。使用a.a any()或a.a all()

的问题是,如果我这样做,我不知道如何告诉它哪个值要替换,如果我使用a.a any()。到目前为止,我认为我需要的是:

if a.any(data) > 50:

然后一行代码告诉它将值替换为10,但我不确定如何告诉它对它找到的像素这样做,因为我在编码方面有点糟糕。如果索引的值超过50,我该如何减少它们的值?

你可以使用布尔索引来改变你的数据

import numpy as np
a = np.random.random_integers(40, 60, (5,5))
>>> a
array([[58, 58, 43, 56, 54],
       [59, 40, 42, 52, 45],
       [50, 60, 43, 48, 52],
       [55, 48, 57, 41, 47],
       [57, 55, 43, 54, 42]])
>>>
>>> a > 50
array([[ True,  True, False,  True,  True],
       [ True, False, False,  True, False],
       [False,  True, False, False,  True],
       [ True, False,  True, False, False],
       [ True,  True, False,  True, False]], dtype=bool)
>>>
>>> a[a > 50] = 0
>>> a
array([[42,  0,  0,  0, 48],
       [ 0, 46,  0,  0, 49],
       [50,  0,  0, 44, 43],
       [46, 46,  0, 43, 49],
       [ 0,  0,  0,  0, 48]])
>>> 

相关内容

  • 没有找到相关文章

最新更新