【发布时间】:2018-07-26 02:08:21
【问题描述】:
我有 9 个数组,我想对其进行操作以查找所有可能的组合,因此结果数组的名称会告诉我哪些数组已被组合。例如:
a1_a2 = array1 - array2
a1_a3 = array1 - array3
a1_a4 = array1 - array4
.
.
.
a9_a6 = array9 - array6
a9_a7 = array9 - array7
a9_a8 = array9 - array8
显然我可以对其进行硬编码,但我怎么能在循环中进行呢?
我想为它写一个函数,比如:
def combineArrays(array1, array2):
result_name = name_of_array1 + '_' + name_of_array2 # How would I do this bit?
result = array1 - array2
return result
for firstArray in arrays:
for secondArray in reversed(arrays): # to go backwards through the list of arrays
combineArrays(firstArray, secondArray)
例如,以下数组:
array1 = [1,2,nan,4,5]
array2 = [5,4,3,2,1]
array3 = [2,4,6,8,10]
应该产生输出
a1_a2 = [-4,-2,nan,2,4]
a1_a3 = [-2,-4,nan,-8,-10]
a2_a1 = [4,2,nan,-2,-4]
a2_a3 = [2,-2,-6,-10,-14]
a3_a2 = [-2,2,6,10,14]
a3_a1 = [2,4,nan,8,10]
因此,每个可能的数组组合的元素减法。
由于我使用的是numpy,是否有线性代数类型的方法可以做到这一点?我怎样才能让程序为我命名数组?
This question 似乎在问类似的问题,但我不明白答案。
【问题讨论】:
-
您正在操作数组,而外部 for 循环正在对其进行迭代。此外,
.reverse()不返回数组,这意味着内部 for 循环可能会失败。如果您想获得反向列表的副本,您可能需要使用reversed(arrays)或arrays[::-1]。 -
我只想向后遍历数组列表。我猜 arrays[::-1] 会更好。我会更新的。
-
name_of_array1是什么意思?当你说array1 - array2-- 元素减法时,你想做什么?您可以使用精简的示例输入和示例输出来更新您的帖子吗? -
1_2 等不是有效的 python 标识符。您根本无法命名变量
-
@MadPhysicist 是的,你说的很对;这些只是我作为示例放入的标识符。我会更新我的问题。
标签: arrays python-3.x list numpy