python - 有效检查 numpy ndarray 值是否严格增加

标签 python numpy matrix

我有一个 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/

相关文章:

python - os.walk once python 的干净方法

python - 在轴顶部绘制标记

python - 为什么某些数据框数学函数花费更多时间?如何加快它们的速度?

c - 如何更改二维数组中的位置

r - 如何更有效地将巨大的向量列表转换为矩阵?

python - 在 scipy 稀疏 csr_matrix 中找到 n 个随机零元素

python - 将 Pandas 数据框转换为字典,其中一列作为键,另一列作为多个值

Python 返回#DIV/0!来自 Google 表格而不是公式结果

python - 将数值数据更改为分类数据 - Pandas

r - 如何按数据框或矩阵中的不同行进行子集化?