Мне нужно решить проблему, в которой я потратил часы, используя данные из моего листа Excel, я создал матрицу нулей 6x36 '' нулей '' и матрицу преобразования координат 6x6 '' matrix_tran '' [изображение 1 ].
Моя проблема в том, что я не могу найти способ заменить нули матрицы '' нулей '' значениями, которые диктует матрица 'matrix_tran' ' и чье местоположение должно быть в столбцах (4,5,6, 7,8,9), которые задаются вектором соединения (4,5,6,7,8,9) элемента 15 листа Excel, то есть последняя строка для итерации l oop [изображение 2].
В заключение: Ниже я покажу, как он подходит и как должен выглядеть [изображения 3 и 4 соответственно].
Я был бы очень признателен за вашу помощь и извините за мой английский sh, но это не мой родной язык, большое приветствие.
import pandas as pd
import numpy as np
ex = pd.ExcelFile('matrix_tr.xlsx')
hoja = ex.parse('Hoja1')
cols = 36
for n in range(0,len(hoja)):
A = hoja['ELEMENT #'][n]
B = hoja['1(i)'][n]
C = hoja['2(i)'][n]
D = hoja['3(i)'][n]
E = hoja['1(j)'][n]
F = hoja['2(j)'][n]
G = hoja['3(j)'][n]
H = hoja['X(i)'][n]
I = hoja['Y(i)'][n]
J = hoja['X(j)'][n]
K = hoja['Y(j)'][n]
L = np.sqrt((J-H)**2+(K-I)**2)
lx = (J-H)/L
ly = (K-I)/L
zeros = np.zeros((6, cols))
counters = hoja.loc[:, ["1(i)", "2(i)", "3(i)", "1(j)", "2(j)", "3(j)"]]
for _, i1, i2, i3, j1, j2, j3 in counters.itertuples():
matrix_tran = np.array([[lx, ly, 0, 0, 0, 0],
[-ly, lx, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, lx, ly, 0],
[0, 0, 0, -ly, lx, 0],
[0, 0, 0, 0, 0, 1]])
zeros[:, [i1 - 1, i2 - 1, i3 - 1, j1 - 1, j2 - 1 , j3 - 1]] = matrix_tran