[英]Divide elements of each element of a vector with subsequent elements of the same vector
我有一个包含 91 个项目的向量。 从这个向量中,我想导出一个新向量,其中每个元素除以向量中的每个后续元素。
例如,如果向量是
[2,4,6,8]
那么我想要这些操作
2/4, 2/6, 2/8, 4/6, 4/8, 6/8
这会给我
[0.5, 0.33, 0.25, 0.66, 0.5, 0.75]
我的向量包含 91 个元素,结果应该有 4095 个元素(使用组合公式nCr = n! / r!(nr)! )。
我假设我需要创建嵌套的 For 循环,因为变量j
(分母)每增加一次变量i
(分子)递增多次。 然后我需要进行除法,并将 append 的每个结果转换为一个新的向量(列表)。
所以我有一些解决方案(我认为):
my_new_vector = []
For i in my_vector
For j in my_vector
quotient = i/j
my_new_vector.append
但在那之后,我只是不清楚如何构建嵌套的 For 循环。
你很接近,你确实需要两个叠瓦环:
test = [2,4,6,8]
ans = []
for i in range(len(test)): # for each value of the array
for j in range(i+1, len(test)): # We go from the next value to the end of the array.
ans.append(test[i]/test[j])
不要犹豫打印test[i]
和test[j]
以更好地了解它是如何工作的。
来自 itertools 的组合可以直接为您做到这一点:
from itertools import combinations
numbers = [2,4,6,8]
divisions = [a/b for a,b in combinations(numbers,2)]
print(divisions)
# [0.5, 0.3333333333333333, 0.25, 0.6666666666666666, 0.5, 0.75]
如果您不想使用库,则可以像这样以更 Pythonic 的方式制作循环:
divisions = []
for i,a in enumerate(numbers[:-1],1):
divisions.extend(a/b for b in numbers[i:])
print(divisions) # [0.5, 0.3333333333333333, 0.25, 0.6666666666666666, 0.5, 0.75]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.