Функция для перебора всех уникальных комбинаций матрицы

#python #function

Вопрос:

Я новичок в программировании. Я пытаюсь написать функцию, которая создает список матриц 4×1 из моих данных, где последняя строка всегда равна нулю. Каждая последовательная матрица обменивает одну строку на другую, так что каждый массив уникален и никакие комбинации чисел не повторяются.

 # The array I'm using
[[-28.71703997]
[-20.3186618]
[-47.5926421]
[-24.42789423]
[-69.78148825]
[-42.91613279]
[0.0]]
 

Я пытаюсь создать матрицы, используя 1-ю, 2-ю и 3-ю строки, затем 1-ю, 2-ю и 4-ю строки, затем 1-ю, 2-ю и 5-ю строки и так далее. Затем переместитесь вниз, чтобы создать матрицы со 2-й, 3-й и 4-й строками, 2-й, 3-й и 5-й строками и так далее. Кто-нибудь может помочь с этим? Я продолжаю получать ошибку имени для » j » и «arrb».
Вот мой код:

 # arr_e is the array of Free Energies that I'm trying to use and m is the length.

def EnergyArrays(arr_e, m):
    listn = []
    matrix = [[]]
    for i in range(m-2):
        for j in range(i, m-2):
            matrix = Matrix4x1(arr_e[i], arr_e[j 1], arr_e[j 2])
            listn.append(matrix)
    return listn

def Matrix4x1(arra, arrb, arrc):
    matrix = np.zeros([4,0], dtype=float)
    for i in range(4):
        if i == 0:
            matrix[i][j] = arra[j]
        if i == 1:
            matrix[i][j] = arrb[j]
        if i == 2:
            matrix[i][j] = arrc[j]

    return matrix
 

Мой ожидаемый результат — список массивов:

 [[-28.71703997]
[-20.3186618]
[-47.5926421]
[0.0]]

[[-28.71703997]
[-20.3186618]
[-24.42789423]
[0.0]]

[[-28.71703997]
[-20.3186618]
[-69.78148825]
[0.0]]

[[-28.71703997]
[-20.3186618]
[-42.91613279]
[0.0]]

[[-20.3186618]
[-47.5926421]
[-69.78148825]
[0.0]]

[[-20.3186618]
[-47.5926421]
[-42.91613279]
[0.0]]

[[-47.5926421]
[-24.42789423]
[-69.78148825]
[0.0]]

[[-47.5926421]
[-24.42789423]
[-42.91613279]
[0.0]]
 

и так далее, и тому подобное…

Спасибо за любую помощь!

Комментарии:

1. Не могли бы вы, пожалуйста, предоставить свои ожидаемые результаты. Трудно понять, чего вы пытаетесь достичь.

2. Это можно сделать с помощью itertools.combinations() .