Python 查找超过numpy数组中以前值的值的索引
我有一个numpy阵列:Python 查找超过numpy数组中以前值的值的索引,python,numpy,Python,Numpy,我有一个numpy阵列: >>> n1 = np.array([[1, 4], [1, 5], [2, 4], [7, 2], [1, 3], [4, 7], [2, 9]]) >>> n1 array([[1, 4], [1, 5], [2, 4], [7, 2], [1, 3], [4, 7], [2, 9]]) 我正在寻找一种方法,在大于它的值出现之后的第一列中找到值出
>>> n1 = np.array([[1, 4], [1, 5], [2, 4], [7, 2], [1, 3], [4, 7], [2, 9]])
>>> n1
array([[1, 4],
[1, 5],
[2, 4],
[7, 2],
[1, 3],
[4, 7],
[2, 9]])
我正在寻找一种方法,在大于它的值出现之后的第一列中找到值出现的索引。在这种情况下,我希望:
array([4, 6])
因为值1小于7,值2小于4(全部在列0中)
有一种很好的Pythonic方法吗?您可以在第一列中使用
numpy.diff
,找到负值的位置
np.where(np.diff(n1[:,0])<0)
添加
1
以根据需要调整索引。播放n1[1:,:]-n1[:-1,:]
,连续行之间的差异。您好,谢谢。通过分配一个新数组n2
,该数组只包含n1
的第0列,并使用您的建议,我构建了np.where(n2[1:]-n2[:-1]<0)
,它给了我(数组([3,5]),
,而不是数组([4,6])
其中给出了一个元组,即条件的每个维度一个元素。您的案例是1d,因此结果是一个1元素元组。感谢@busybear,这给了我(数组([3,5]),
,这不是我想要的(当然我承认您说过使用1来调整索引),您是否在寻找不需要添加1的解决方案?这似乎是一个微不足道的步骤。这有点迂腐。不过,对于正在寻找的任何人,请执行以下操作:n2=np.where(np.diff(n1[:,0])<0)
,然后n3=np.sum(n2,1)
,它将根据需要获取数组([4,6])
。