将if语句函数应用于3D数组numpy

时间:2019-11-02 00:34:01

标签: python arrays numpy mapping

我在numpy中有一个92x92x1数组,对于该数组中的每个值,如果该值大于122,则应将其转换为255,否则应将其转换为0。 >

new_array=[]
for i in arr:
    column=[]
    for j in i:
        if j>122:
            temp=255
        else:
             temp=0
        column.append(j)
    new_array.append(column)
new_array=np.resize(np.array(new_array),(92,92,1))

,但是必须有一种更快,更优雅,更pythonic的方式来做到这一点!还有其他方法可以将这些类型的函数映射到3D数组吗?

1 个答案:

答案 0 :(得分:3)

NumPy支持向量化操作,因此您不需要for循环。您可以使用布尔索引,它将适用于所有尺寸。

import numpy as np

arr = np.random.randint(0, 255, (92, 92, 1))

arr[arr >= 122] = 255

arr[arr < 122] = 0