一维NumPy数组中的零和一翻转

2024-07-01 07:10:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个一维NumPy数组,它由0和1组成,如下所示:

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

我想要一个快速的方法来“翻转”这些值,使0变为1,1变为0,从而产生如下NumPy数组:

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

有一个简单的班轮吗?我查看了fliplr()函数,但这似乎需要维度为2或更大的NumPy数组。我相信有一个相当简单的答案,但任何帮助都将不胜感激。


Tags: 方法函数答案numpy数组array班轮fliplr
3条回答

你的问题里一定有我不明白的地方。。。

无论如何

In [2]: from numpy import array

In [3]: a = array((1,0,0,1,1,0,0))

In [4]: b = 1-a

In [5]: print a ; print b
[1 0 0 1 1 0 0]
[0 1 1 0 0 1 1]

In [6]: 

从数学上讲,首先想到的是(value + 1) % 2

>>> (a+1)%2
array([1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32)

表明您可能应该使用布尔数据类型的标志

a = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=np.bool)
# or
b = ~a
b = np.logical_not(a)

相关问题 更多 >

    热门问题