#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() .