当前位置: 首页 > 知识库问答 >
问题:

查找列表中所有值之间的差异

曹经业
2023-03-14

我想找出numpy数组中所有值之间的差异,并将其附加到一个新列表中。

Example: a = [1,4,2,6]
result : newlist= [3,1,5,3,2,2,1,2,4,5,2,4]

也就是说,对于一个的每个值i,确定列表其余部分的值之间的差异。

在这一点上,我一直无法找到解决办法


共有2个答案

宦砚
2023-03-14

您可以这样做:

a = [1,4,2,6]
newlist = [abs(i-j) for i in a for j in a if i != j]

输出:

print newlist 
[3, 1, 5, 3, 2, 2, 1, 2, 4, 5, 2, 4]
淳于慎之
2023-03-14

我相信您试图做的是计算输入列表元素之间的绝对差异,但不包括自身差异。因此,有了这个想法,这可能是一种矢量化的方法,也称为数组编程-

# Input list
a = [1,4,2,6]

# Convert input list to a numpy array
arr = np.array(a)

# Calculate absolute differences between each element 
# against all elements to give us a 2D array
sub_arr = np.abs(arr[:,None] - arr)

# Get diagonal indices for the 2D array
N = arr.size
rem_idx = np.arange(N)*(N+1)

# Remove the diagonal elements for the final output
out = np.delete(sub_arr,rem_idx)

示例运行以显示每个步骤的输出-

In [60]: a
Out[60]: [1, 4, 2, 6]

In [61]: arr
Out[61]: array([1, 4, 2, 6])

In [62]: sub_arr
Out[62]: 
array([[0, 3, 1, 5],
       [3, 0, 2, 2],
       [1, 2, 0, 4],
       [5, 2, 4, 0]])

In [63]: rem_idx
Out[63]: array([ 0,  5, 10, 15])

In [64]: out
Out[64]: array([3, 1, 5, 3, 2, 2, 1, 2, 4, 5, 2, 4])

 类似资料:
  • 我有一个这样的python列表, 我需要做的是找到每个数字与所有其他数字的差值,然后找到所有这些差值的平均值。 所以,对于这种情况,它首先会找到和所有剩余元素之间的区别,即,然后它会找到与剩余元素的区别,即等。 之后,它将计算所有这些差异的平均值。 现在,这可以通过两个For循环轻松完成,但是在时间复杂度和一点点“混乱”代码中。我想知道是否有更快,更有效的方法可以做同样的事情?

  • 问题内容: 给定一个数字列表,人们如何发现第()个元素与其第()个元素之间的差异? 使用表达式还是列表理解更好? 例如: 给定一个列表,我们的目标是要找到一个列表,因为,等等。 问题答案:

  • 我是一个新手在python和我试图弄清楚,我如何区分2列表,如下所示 而且 问题是,这两个列表都有元素,我需要一个可靠的条件来满足,如果列表中有一个项是字符串而不是。列表也可能有7个,只有一个项目是字符串。

  • 我需要使用python找出两个列表之间的差异。这个问题以前在堆栈溢出上被问过很多次,但没有一个提到重复(即和之间的区别是;我需要它是,因为每个数字在我的程序中都很重要)。 我尝试过使用numpy的setdiff1d,但它无法满足上述标准 如上所述,这只说明同一项是否在列表中,而不是它在该列表中的次数。我还可以使用其他功能吗?

  • 问题内容: 我有一列的数据像 我需要编写一个SQL查询/过程,这将有助于我获取日期之间差异的平均值。对于上面的示例,它将是 (19 + 8 + 10)/3=12.33。 请提供帮助。 在此先感谢Geetha 问题答案: 我不知道您的RDBMS,但这是来自SQL Server。另外,您的计算之一是错误的-02/09/2011-13/08/2011是20,而不是19。 产生的结果是12.667:(20