Я создал вектор нулей с именем Qc_vector (18 строк x 1 столбец).
Я создал еще один вектор с именем s_vector (6 строк x 1) столбец), который каждый раз генерируется для l oop в диапазоне ingreso_datos , то есть для этого примера он генерируется 5 раз.
Я также создал список с именем индексы , которые генерируются для каждой итерации l oop, эти индексы сообщают мне номер строки, к которой я должен индексировать значения от s_vector до Qc_vector
ПРОБЛЕМА
При попытке сделать это я получаю следующую ошибку: ValueError: несоответствие формы: массив значений формы (6,) не может быть передан для индексации результата формы (6,1)
Для элемента 6 матрицы ingreso_datos индексы составляют: [1,2,3, 4,5,6]
Для конца l oop, то есть для элемента с номером 5 s_vector это выглядит так:
s_vector для элемента 5
Qc_vector проиндексирован, как он должен выглядеть
import numpy as np
# Element 1(i) 2(i) 3(i) 1(j) 2(j) 3(j) x(i) y(i) x(j) y(j) | W(kg/m) Axis(kg/m)
# [Col0] [Col1] [Col2] [Col3] [Col4] [Col5] [Col6] [Col7] [Col8] [Col9] [Col10] | [Col11] [Col12]
ingreso_datos = [[ 1, 13, 14, 15, 7, 8, 9, 0, 0, 0, 2.5, 0, 0],
[ 2, 16, 17, 18, 10, 11, 12, 4.5, 0, 4.5, 2.5, 0, 0],
[ 3, 7, 8, 9, 1, 2, 3, 4.5, 0, 4.5, 2.5, 0, 0],
[ 4, 10, 11, 12, 4, 5, 6, 4.5, 0, 4.5, 2.5, 0, 0],
[ 5, 7, 8, 9, 10, 11, 12, 4.5, 0, 4.5, 2.5, -2200, 0]]
Qc_vector = np.zeros((12,1)) # Vector de zeros
for i in range(len(ingreso_datos)):
indices = []
indices.append([ingreso_datos[i][0], ingreso_datos[i][1], ingreso_datos[i][2], ingreso_datos[i][3],
ingreso_datos[i][4], ingreso_datos[i][5], ingreso_datos[i][6]])
for row in indices:
indices = np.array(row[1:])
L = np.sqrt((ingreso_datos[i][9]-ingreso_datos[i][7])**2+(ingreso_datos[i][10]-ingreso_datos[i][8])**2)
lx = (ingreso_datos[i][9]-ingreso_datos[i][7])/L
ly = (ingreso_datos[i][10]-ingreso_datos[i][8])/L
w = ingreso_datos[i][11]
ad = ingreso_datos[i][12]
s_vector = np.array([ad*L/2, w*L/2, (w*L**2)/12, ad*L/2, w*L/2, (-w*L**2)/12]) # s_vector
Qc_vector[np.ix_(indices)] = s_vector # Indexing