我有一个 numpy ndarray,我想在其中检查每个行向量是否单调递增。
例子:
a = np.asarray([[1,2,3],[1,5,7],[4,3,6]])
monotonically_increasing(a)
预期返回:
[True, True, False]
我不完全确定如何有效地执行此操作,因为预计矩阵会非常大 (~1000x1000),并希望得到一些帮助。
最佳答案
>>> import numpy as np
>>> a = np.asarray([[1,2,3],[1,5,7],[4,3,6]])
找出每个元素之间的差异。 np.diff
有一个参数,可让您指定轴以执行差异
>>> np.diff(a)
array([[ 1, 1],
[ 4, 2],
[-1, 3]])
检查每个差异是否大于 0。
>>> np.diff(a) > 0
array([[ True, True],
[ True, True],
[False, True]], dtype=bool)
检查是否所有差异都 > 0
>>> np.all(np.diff(a) > 0)
False
>>>
正如@Jaime 所建议的那样——检查每个元素是否大于其左侧 的元素:
np.all(a[:, 1:] >= a[:, :-1], axis=1)
这似乎是我的 diff 解决方案的速度/效率的两倍。
关于python - 有效检查 numpy ndarray 值是否严格增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30734258/