将numpy数组值从零更改为-1

时间:2017-03-18 14:57:16

标签: python python-3.x numpy

我有一个由随机排列的1和0组成的numpy数组。

numpy.array([[0,1,1],[1,0,0]]) 

如何在不更改零的情况下将零更改为-1?

1 个答案:

答案 0 :(得分:1)

正如the comments中已经指出的那样,基本上有两种方法可以替换这些值。使用boolean array indexing来更改原位值:

>>> import numpy as np
>>> arr = np.array([[0,1,1],[1,0,0]])
>>> arr[arr==0] = -1
>>> arr 
array([[-1,  1,  1],
       [ 1, -1, -1]])

您可能想要检查arr == 0(创建掩码)和arr[arr == 0]的中间步骤(仅获取掩码为True的数组值,在这种情况下,值为0)了解发生了什么。

或者,如果您想要创建替换值的数组副本,则np.where

>>> np.where(arr==0, -1, arr)
array([[-1,  1,  1],
       [ 1, -1, -1]])

这将创建一个新数组,并在条件(第一个参数)为True的任何地方使用第二个参数,否则使用第二个参数items。