我有一个随机数据集,我想知道是否可以找到所有的点之间的差异大于某些常数。只要相应值之间的差值大于该常数,这些点是否不连续都没有关系。找到两个值之间的差异?
回答
您可以(也可能应该)使用itertools.permutations
,不需要嵌套循环。
E.摹:如果我们想找到10和15之间的数字内容(包括10和15)差大于3:
from itertools import permutations
numbers = range(10, 16)
restriction = 3
filtered_numbers_pairs = []
for value, other_value in permutations(numbers, r=2):
if value - other_value > restriction:
filtered_numbers_pairs.append((value, other_value))
print(filtered_numbers_pairs)
给我们
[(14, 10), (15, 10), (15, 11)]
或者,如果你需要存储值指标 - 只需添加enumerate
:
from itertools import permutations
numbers = range(10, 16)
restriction = 3
filtered_numbers_pairs = []
for (index, value), (other_index, other_value) in permutations(enumerate(numbers), r=2):
if value - other_value > restriction:
filtered_numbers_pairs.append((index, other_index))
print(filtered_numbers_pairs)
给了我们
[(4, 0), (5, 0), (5, 1)]
非常感谢。这正是我期待的。我真的很感激 –
@alexanderson:不客气(你也可以[回答投票](https://stackoverflow.com/help/someone-answers)) –
是的,这是可能的。 这将是这样的:
sets = []
for item1 in dataset:
for item2 in dataset:
if abs(item1 - item2) > somevalue):
sets.append((item1, item2))
您创建一个sets
列表,保存值,对其中有一个绝对差值比somevalue
大这是要去。然后将包含这些项目值的集合追加到sets
。
编辑:列表sets
是一个可变对象,如果你想这是不可变的,这段代码将不适用于你。
name'sets'具有误导性,让我觉得它包含'set'对象 –
@AzatIbrakov:这不是一个微妙的提示吗? ;) – Arafangion
它确实包含集合对象,它是集合列表 –
使用嵌套循环
diff = []
for i, val1 in enumerate(dataset):
for j, val2 in enumerate(dataset[i+1:]):
if abs(val1 - val2) > some_constant:
diff.append((i, j))
内环使用数组的一个切片,所以我们不都i, j
和j, i
添加到结果。
Python支持集:
>>> a = {1, 2, 3}
>>> type(a)
<type 'set'>
>>> b = {2, 4, 5}
>>> a-b # Finds all items in a, but not in b.
set([1, 3])
>>> b-a # Finds all items in b, but not in a.
set([4, 5])
>>> (a-b).union(b-a) # Finds the union of both differences.
set([1, 3, 4, 5])
见help(set)
的文档。
但是,要将此应用于您的问题,您需要提供一个您拥有的数据和您想要的结果的示例。例如,可能需要一些标准化,或者你可能没有处理集合。
你所做的被称为['symmetric difference'](https://en.wikipedia.org/wiki/Symmetric_difference),'set'有一个[method](https://docs.python.org/2 /library/sets.html#set-objects):'a。symmetric_difference(b)'(但是我不知道OP是在找什么) –
@AzatIbrakov:的确,运营商似乎已经重载了' - '来做到这一点。 – Arafangion
通过使用“set”这个词,我很抱歉用错误的方式来提问这个问题。我在随机数据集中寻找一对数字,如果相乘,就会产生一个常数值。我为我的错误道歉。 –
- 1. 要找到两次之间的差异
- 2. 两个数组之间的差异值
- 3. 查询找到两个时间数据之间的差异
- 4. 添加或找到两个时间戳之间的差异
- 5. 找到两个日期时间之间的微小差异
- 6. PHP找到两个日期时间之间的差异
- 7. 在javascript中找到两个日期时间之间的差异
- 8. PHP - 查找两个数组的值之间的差异/减法
- 9. 找到同一个表中两个字段之间的差异
- 10. 找到“number”列值相同的每行的两个值之间的差异
- 11. 查找AmCharts中两个点序列值之间的差异?
- 12. SQL查找两行之间的差异
- 13. 找到两个XML之间的差异差异在marklogic中的文件
- 14. 如何找到mule中两个时间戳值之间的差异?
- 15. 找到两个图像之间的差异的边界框?
- 16. 找到两个日期之间的差异的方法
- 17. 查询到两个记录之间找到差异
- 18. 找到时间之间的差异c
- 19. 找到两个csv文件中列名之间的差异?
- 20. 如何找到两个图像之间的差异矩形
- 21. 找到两个git仓库之间的差异
- 22. 如何找到两个熊猫DataFrames之间的设置差异
- 23. 如何找到两个日期之间的星期差异
- 24. 找到两个温度之间的差异
- 25. 在sql中找到两个表之间的重复差异
- 26. WebStorm和Git:如何找到两个提交之间的差异?
- 27. 如何找到两个表之间的序列差异?
- 28. 如何找到两个图像之间的差异
- 29. 找到两个日期之间的差异正好是1年
- 30. 如何找到两个日期之间的差异
我们需要一个数据示例 – codyc4321
使用经过数据集的嵌套循环并计算元素之间的差异。 – Barmar
请更具体的:添加输入样本和所需的输出 –