Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于布尔映射、布尔掩码对特定数组位置的操作_Python_Arrays_Numpy_Masked Array - Fatal编程技术网

Python 基于布尔映射、布尔掩码对特定数组位置的操作

Python 基于布尔映射、布尔掩码对特定数组位置的操作,python,arrays,numpy,masked-array,Python,Arrays,Numpy,Masked Array,我想让代码基于布尔映射对数组的指定元素执行某些操作 假设我有一个numpy数组 a=np.数组[[-2.5,-3.2],[2.3,5.3],[1.9,-2.8]] 我想对所有的负元素执行某些操作,比如np.ceil,但不对正元素执行 我知道你可以通过以下方法创建布尔掩码 你可以试试这样的东西。如果数字为负数,这是应用函数np.ceil的一种方法,否则就别管它 result = np.array([ [ np.ceil(num) if num <

我想让代码基于布尔映射对数组的指定元素执行某些操作

假设我有一个numpy数组

a=np.数组[[-2.5,-3.2],[2.3,5.3],[1.9,-2.8]]

我想对所有的负元素执行某些操作,比如np.ceil,但不对正元素执行

我知道你可以通过以下方法创建布尔掩码
你可以试试这样的东西。如果数字为负数,这是应用函数np.ceil的一种方法,否则就别管它

    result = np.array([
        [
            np.ceil(num) if num < 0 else num
            for num
            in s
        ]
        for s
        in a
    ])
您也可以在这里查看

你可以试试这样的东西。如果数字为负数,这是应用函数np.ceil的一种方法,否则就别管它

    result = np.array([
        [
            np.ceil(num) if num < 0 else num
            for num
            in s
        ]
        for s
        in a
    ])
您也可以在这里查看
一种简单的方法是:

a[a<0]=np.ceil(a[a<0])
#array([[-2. , -3. ],
#       [ 2.3,  5.3],
#       [ 1.9, -2. ]])

一种简单的方法是:

a[a<0]=np.ceil(a[a<0])
#array([[-2. , -3. ],
#       [ 2.3,  5.3],
#       [ 1.9, -2. ]])

a[aa[a非常感谢你的回答!Mask是我一直在寻找的。这依赖于NumPy提供的np.ma.ceil函数。如果它是自定义的用户定义函数呢?有没有办法将函数映射到掩码数组?非常感谢你的回答!Mask是我一直在寻找的。这依赖于由NumPy提供。如果是自定义的用户定义函数呢?有没有办法将函数映射到屏蔽数组?