让我们考虑以下数组:
x = np.array(["john", "john", "ellis", "lambert", "john"])
有没有办法将数组的每个元素与之前的元素进行比较并返回一个布尔数组。
在本示例中,结果为[True,False,False,False]
。
是否有任何功能(类似于np.diff
)来实现这一目标?
答案 0 :(得分:2)
您可以使用索引执行此操作:
array[:-1] == array[1:]
答案 1 :(得分:0)
列表中的第一项无法与之前的值进行比较,可能默认为np.nan
。
保持与原始数组相同的形状:
>>> np.concatenate([np.array([np.nan]), x[:-1] == x[1:]])
array([ nan, 1., 0., 0., 0.])
将nan
更改包含在要浮动的类型中。
答案 2 :(得分:0)
使用索引,您可以轻松完成此操作。
import numpy as np
x = np.array(["john", "john", "ellis", "lambert", "john"])
print x[1:] == x[:-1]
语句x[1:] == x[:-1]
有效,因为==
操作数返回布尔值,并且在这种情况下由于两个比较项的类型而在数组中显示。
x[1:]
表示数组中除项目0(第一项)以外的所有元素,而x[:-1]
表示除最后一项外的数组中的所有元素。