python - 如何在数组内部进行比较?
问题描述
我有这个数组:
array([[4798, 1369, 4139, ..., 2910, 2901, 0],
[ 2, 3161, 1343, ..., 2085, 2065, 2399],
[ 546, 506, 614, ..., 1874, 1859, 4799],
[ 0, 634, 1341, ..., 1886, 1871, 4799]], dtype=int64)
我可以看到最后一行中有两个相等的数字(4799)。我想要的是创建一个比较相邻行并返回具有相等数字的数组或列表的函数。我不知道该怎么做。我尝试用 a 来做,for
但是当我有一个最大的数组时,这种方法非常慢。
解决方案
假设a
是你的数组。然后尝试以下可能会有所帮助,
def equalnumbers(a):
row,col = np.where((a[1:,:]-a[:-1,:]) ==0)
return a[row,col]
试用示例:
请注意,我使用的数组有两个在相邻行中相等的数字。还有两次数字 0,但在不相邻的行中!
import numpy as np
a = np.array([[4798, 1369, 4139, 2910, 2901, 0],
[4798, 3161, 1343, 2085, 2065, 2399],
[546, 506, 614, 1874, 1859, 4799],
[0, 634, 1341, 1886, 1871, 4799]])
equalnumbers(a)
输出:
array([4798, 4799])
该函数仅从相邻行返回相等的数字,而不是在非相邻行中存在的 0。希望有帮助。
推荐阅读
- python - 带有移动窗口的滚动平均值
- python - Python将带有CRLF的文件转换为CSV/Excel中的新行
- ethereum - 在逻辑应用中签署原始交易
- php - 如何使数组编号成为一个值
- opencv - 控制流 Python OpenCv:为什么 cv2.setMouseCallback 不在循环内?
- regex - TYPO3 9.5 - 使用 cms-redirects 重定向
- python - Python 程序 - 在给定的数字列表中查找最大序列的程序
- database-design - 数据库设计。如何设计一张表与同一张字典表有10个关系
- java - 虽然无限(限制)循环无法正常工作
- git - 如何为整个目录应用 git --skip-worktree?