- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个有序距离索引数组。
d
array([[ 0. , 5.38516481, 8.60232527, 7.61577311,
3. , 4.12310563, 12.36931688],
[ 5.38516481, 0. , 5. , 7. ,
7.07106781, 2. , 13.34166406],
[ 8.60232527, 5. , 0. , 6.164414 ,
8.77496439, 6.70820393, 10.34408043],
[ 7.61577311, 7. , 6.164414 , 0. ,
8.18535277, 8.06225775, 10.04987562],
[ 3. , 7.07106781, 8.77496439, 8.18535277,
0. , 6.164414 , 10.09950494],
[ 4.12310563, 2. , 6.70820393, 8.06225775,
6.164414 , 0. , 13.92838828],
[ 12.36931688, 13.34166406, 10.34408043, 10.04987562,
10.09950494, 13.92838828, 0. ]])
a = np.argsort(d,axis=1)[:,-3:]
a
array([[3, 2, 6],
[3, 4, 6],
[0, 4, 6],
[5, 4, 6],
[3, 2, 6],
[2, 3, 6],
[0, 1, 5]], dtype=int64)
需要从最后一列到第一列累计检查。
我尝试这样做:
unique, counts = numpy.unique(a, return_counts=True)
x = dict(zip(unique, counts))
sorted(x.items(), key = lambda x: x[1],reverse=True)
[(6, 6), (3, 4), (2, 3), (4, 3), (0, 2), (5, 2), (1, 1)]
在上面的元组列表中,(2, 3) 和 (4, 3)
具有相同的计数。但是当我们从最后一列到第一列累积检查时。我需要将列表获取为 (4, 3), (2, 3)
,因为 4 出现在列中的 2 之前。
3 个最大出现次数的预期输出:
[6, 3, 4]
为了进行验证,请检查以下内容:
a = np.array([[2, 3, 6],
[2, 4, 5],
[0, 4, 3],
[1, 4, 6],
[2, 3, 5],
[3, 2, 6],
[0, 1, 5]])
unique, counts = numpy.unique(a, return_counts=True)
x = dict(zip(unique, counts))
sorted(x.items(), key = lambda x: x[1],reverse=True)
[(2, 4), (3, 4), (4, 3), (5, 3), (6, 3), (0, 2), (1, 2)]
在上面的列表中,我们需要将列表获取为 (3, 4) then (2, 4)
以及 (5, 3), (6, 3) 和然后 (4, 3)
因为 (5, 3), (6, 3)
出现在最后一列中,先于 4。最后,如果同一列中有相同的计数,例如(5, 3), (6, 3)
对,使距离最大的索引首先出现,如上面的 d
数组所示。
注意:验证矩阵是手动创建的,并且距离不存在,而第一个矩阵是真实的。
请给我通用的解决方案,并且可以适用于任何此类数组。
我尝试编码,但无法获得完成任务的正确逻辑。我知道我沿列应用了 np.argmax()
但我需要累积检查。
如果您不明白问题的任何部分,请发表评论,我会澄清。
最佳答案
以下内容需要 numpy 1.13+,因为它使用新的 axis
参数unique
.
import numpy as np
a = np.array([[2, 3, 6],
[2, 4, 5],
[0, 4, 3],
[1, 4, 6],
[2, 3, 5],
[3, 2, 6],
[0, 1, 5]]) * 1000 # do not rely on uniques being 0,1,2,3...
# add column indices
ac = np.c_[a.ravel(), np.outer(np.ones((len(a),), a.dtype), np.arange(3)).ravel()]
# find uniq pairs (data, col ind)
uniq, cnts = np.unique(ac, return_counts=True, axis=0)
uniquniq, uniqidx = np.unique(uniq[:, 0], return_inverse=True)
# make grid uniq els x col idx fill with counts
fullcnts = np.zeros((len(uniquniq), 3), dtype=int)
fullcnts[uniqidx, uniq[:, 1]] = cnts
cumcnts = np.cumsum(fullcnts[:, ::-1], axis=-1)
# order by sum and then column cnts as tie breakers
order = np.lexsort((cumcnts[:, 1], cumcnts[:, 0], cumcnts[:, 2]))[::-1]
result = list(zip(uniquniq[order], cumcnts[order, 2]))
# [(3000, 4), (2000, 4), (6000, 3), (5000, 3), (4000, 3), (1000, 2), (0, 2)]
逐行:
1) 我们创建一个看起来像 [(2, 0), (3, 1), (6, 2), (2, 0), (4, 1), (5, 2), ...,即 a 的每个元素及其列索引。
2) 这样我们就可以制作unique
按列计算出现次数。例如,为 uniq 元素 (2, 0) 返回的计数将是第零列中 2 的数量。
3)我们现在从唯一对中提取实际的唯一值。 uniqidx
与 uniq
相同但每个元素都替换为其在 uniquniq
中的位置(索引)
4)接下来我们构建一个唯一 x 列的表
5) 并将所有计数放在适当的位置
6) 然后我们对计数求和。 (其实没必要用累加,但也没什么坏处)
7) 我们现在拥有对独特内容进行排名所需的所有内容。 lexsort
是间接排序,如 argsort
,只有您可以按多个向量排序,首先考虑最后传递的向量。我们把cumcnts[:, 2]
其中是总计数,接下来(如果平局)cumcnts[:, 0]
这是最后一列的计数,最后是 cumcnts[:, 1]
这是最后一列和中间列的总计数。正如(6)中提到的,我们也可以在这里单独使用中间列的计数。
8) lexsort
返回一个索引 ( order
),我们用它来按正确的顺序排列唯一值及其计数。
关于python - 如何根据累积列、当前列和距离对数组中值的最大出现次数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47590148/
A是不同元素的序列,B是A的子序列,A-B是A中的所有元素,但不是B中的所有元素距离(A) = 总和|a(i)-a(i+1)|从 i=1 到 n-1找到一个子序列 B 使得 Dist(B)+Dist(
我想通过计算每对中所有(多维)点集之间距离的平均值来量化组相似性。 我可以很容易地手动为每对组手动完成此操作,如下所示: library(dplyr) library(tibble) library(
在 OpenXML 中用于指定大小或 X、Y 坐标的度量单位是什么? (介绍)。 将那些与像素匹配是否有意义,如果是这样,那些如何转换为像素? graphicFrame.Transform = new
我想知道是否有人可以帮助我替换过渡层中的值。 如果我尝试: transitionlayer[transitionlayer >= 0.14] = 0.14 : comparison (5) is
我在 firebase 中有一个列表,其中包括地理位置(经度和纬度),并且我想获得距给定坐标最近的 10 个位置。 我正在从 MySQL 过渡,在那里我将计算 SELECT 中的距离, 并在 ORDE
如何在 Python 中根据 2 个 GPS 坐标计算速度、距离和方向(度)?每个点都有纬度、经度和时间。 我在这篇文章中找到了半正矢距离计算: Calculate distance between
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
我只想使用 matplotlib 标记两条曲线之间发生最大偏差的位置。请帮助我。 垂直距离适用于 Kolmogorov–Smirnov test import numpy as np %matplot
我有一个包含数万行重复项的文件。我想根据行号找到重复项之间的平均时间/距离。 例如:(其中第一列是行号) 1 string1 2 string2 3 string2 4 string1 5 strin
用公式speed=distance/time计算时间 但时间总是0我的输入是 distance=10 和 speed=5 我的输出必须 = 2 #include int main() { in
我正在使用 Levenshtein 算法来查找两个字符串之间的相似性。这是我正在制作的程序的一个非常重要的部分,因此它需要有效。问题是该算法没有发现以下示例相似: CONAIR AIRCON 算法给出
对于一个房地产网站,我需要实现一个允许搜索文本和距离的搜索机制。 当 lat 和 lon 记录在单独的列中时,在 MySQL 表上进行距离计算很容易,但房子往往有 LOT true/false 属性。
是否可以在触发前更改 UIPanGestureRecognizer 的距离?目前的实现似乎在触发前有 5-10 像素的距离余量,我想降低它如果可能的话。 原因是我将 UIPanGestureRecog
我试图找到两个网格之间的偏差。例如在 3d 空间中定义的两组点之间的差异,我计划使用一些 3d 可视化工具来可视化距离,例如QT3d 或一些基于开放式 gl 的库。 我有两组网格,基本上是两个 .ST
所以,我有这个函数可以快速返回两个字符串之间的 Levenshtein 距离: Function Levenshtein(ByVal string1 As String, ByVal string2
我正在尝试用字典创建一个光学字符识别系统。 事实上,我还没有实现字典=) 我听说有一些基于 Levenstein 距离的简单指标,这些指标考虑了不同符号之间的不同距离。例如。 'N' 和 'H' 彼此
我在PostGIS数据库(-4326)中使用经纬度/经度SRID。我想以一种有效的方式找到最接近给定点的点。我试图做一个 ORDER BY ST_Distance(point, ST_GeomF
我想从线串的一端开始提取沿线串已知距离处的点的坐标。 例如: library(sf) path % group_by(L1) %>% summarise(do_union =
我已经编写了这些用于聚类基于序列的数据的函数: library(TraMineR) library(cluster) clustering <- function(data){ data <- s
是否可以设置 UILabel 的行之间的距离,因为我有一个 UILabel 包含 3 行,并且换行模式是自动换行? 最佳答案 如果您指的是“前导”,它指的是类型行之间的间隙 - 您无法在 UILabe
我是一名优秀的程序员,十分优秀!