我有一个非常简单的任务,无法在numpy中弄清楚该怎么做。我有一个3通道数组,只要数组值不等于8 gennaio 1960
,我都希望将该数组值转换为(1,1,1)
。
以下内容:
(0,0,0)
应更改为:
[[0,1,1],
[1,1,1],
[1,0,1]]
如何在numpy中实现呢?以下未达到预期效果:
[[0,0,0],
[1,1,1],
[0,0,0]]
答案 0 :(得分:3)
使用numpy.array.all(1)
过滤并分配0:
import numpy as np
arr = np.array([[0,1,1],
[1,1,1],
[1,0,1]])
arr[~(arr == 1).all(1)] = 0
输出:
array([[0, 0, 0],
[1, 1, 1],
[0, 0, 0]])
说明:
arr==1
:返回满足条件(此处为1)的bool
的数组all(axis=1)
:如果每一行都具有所有bool
(即所有为1的行),则返回True
的数组。~(arr==1).all(1)
:选择不是全部为1 答案 1 :(得分:0)
这只是比较两个列表。
x = [[0,1,1],
[1,1,1],
[1,0,1]]
for i in range(len(x)):
if x[i] != [1,1,1]:
x[i] = [0,0,0]