Я создал матрицу из нулей 18x18 под названием ' master_matrix ', и мне нужно заменить значения ее строк и столбцов в соответствующих им индексах значениями, которые другая матрица 6x6 назвала я little_matrix дает мне.
Параллельно с этим, я просто ламада ' replace_master ' que reemplaza esos ceros por los valores de ' little_matrix ' encasillándolos donde los índices indiquen.
Этот процесс мне нужно повторить 6 раз с другими индексами, чтобы это произошло, я создал массив с именем ' input_data ' и al oop, который будет позвольте мне сделать этот процесс для 6 элементов, которые там есть.
ПРОБЛЕМА
Моя проблема в том, что все это работает нормально, только если мои первые три индекса i связаны последовательно со своими следующими тремя индексами j, например, в элементе 6 массива ' input_data ', мои индексы i равны (1,2, 3) и их соответствующие индексы s j есть (4,5,6). НО, если они не связаны последовательно, как, например, то, что происходит в элементе 4, чьи индексы i равны (10,11,12), и их соответствующие j повышаются до (4,5,6), то это уже не работает и все портит , Прикрепленные изображения:
- эта матрица соответствует элементу 6 и там она это делает. Это изображение соответствует master_matrix: относится к элементу 6 (чьи индексы i и j связаны последовательно)
-Но эта матрица, соответствующая элементу 4, больше не выходит
Вот так я получаю массив на основе моего кода ... Это изображение соответствует master_matrix: принадлежащему элементу 4 (чьи индексы i и j НЕ связаны последовательно [image1])
И вот как вы должны получить результат ... Это изображение соответствует master_matrix: принадлежащему элементу 4 (чьи индексы i и j НЕ связаны последовательно) [ image2]
Я прокомментировал элементы 5 и 6 матрицы 'input_data', чтобы они могли видеть, что я получаю от элемента 4, если они хотят увидеть, что исходит от элемента 6, индексы которого последовательно, они могут удалить комментарий.
Я очень благодарен за помощь, которую вы можете оказать мне, и если у вас есть какие-либо вопросы, которые вы можете написать, я буду очень внимательным, привет нгс.
import numpy as np
# 1 I define the large zeros matrix where then I will place the values based on the 'little_matrix__________________________________
master_matrix = np.zeros((18,18))
# 2. Define a function that allows locating the values from 'little_matrix' to 'master_matrix' !!!!_____________________________________________
def replace_master(index_i, value_i):
l = 0
data = []
data.extend(little_matrix[index_i]) #-->Get data row 0 of the 'little_matrix'
for d in data:
master_matrix[value_i][pivot_index + l] = d #--> Write to the 'master_matrix'
l += 1
# 3. Data entered by user interface_____________________________________________________________________________________________
# |---------INDICES: The indices define the position where the zeros of 'master_matrix' are replaced by values of 'little_matrix'-----|
# Element Row |-------1(i) 2(i) 3(i) 1(j) 2(j) 3(j) -----------------------------------|
# [Col0] |------[Col1] [Col2] [Col3] [Col4] [Col5] [Col6] ----------------------------------|
input_data = [[ 1, 13, 14, 15, 7, 8, 9],
[ 2, 16, 17, 18, 10, 11, 12],
[ 3, 7, 8, 9, 1, 2, 3],
[ 4, 10, 11, 12, 4, 5, 6]]
# [ 5, 7, 8, 9, 10, 11, 12],
# [ 6, 1, 2, 3, 4, 5, 6]]
# 4. Loop that will allow you to work with each row of each element__________________________________________________________________________
for i in range(len(input_data)): #--> For row in the 'data entry' range [i]...
index = [] #--> I extract the indexes for each element, inside the loop i
index.extend([input_data[i][1], input_data[i][2], input_data[i][3],
input_data[i][4], input_data[i][5], input_data[i][6]])
index_assemble = [] #--> Because the matrix is counted from scratch, I had to subtract 1 from the index list
for e in index:
index_assemble.append(e-1)
# 4. Extraction of variables that each element has for calculation of 'little_matrix'_____________________________________________________
d = 5
s = 0.2
e = 0.05
y = 5000000
# 5. Little_matrix calculation__________________________________________________________________________________________________________
# |---INDICES: They are the indices of 'little_matrix' that will replace those of 'master_matrix'----|
# |---1(i) 2(i) 3(i) 1(j) 2(j) 3(j) ---------------------|
little_matrix = np.array([[ s*y/d, 0, 0, -s*y/d, 0, 0],
[ 0, y*e/d**3, y*e/d**2, 0, -y*e/d**3, y*e/d**2],
[ 0, y*e/d**2, y*e/d, 0, -y*e/d**2, y*e/d],
[-s*y/d, 0, 0, s*y/d, 0, 0],
[ 0, y*e/d**3, -y*e/d**2, 0, y*e/d**3, -y*e/d**2],
[ 0, y*e/d**2, y*e/d, 0, -y*e/d**2, y*e/d]])
# 6. Assembling the 'master_matrix'___________________________________________________________________________________________________
for i in range(len(input_data)):
pivot_index = index_assemble[0] #--> Pivot Index: It is the index that locates the first element of 'little_matrix', to later insert in 'master_matrix'
for index_i, value_i in enumerate(index_assemble): #--> For each row in the 'index' range ...
replace_master(index_i, value_i) #--> Replace array of zeros in 'master_matrix' with corresponding places in 'little_matrix' based on indices