前提・実現したいこと
多次元配列を足し合わせようとしていますが、うまくできません。
一旦csvで保存してから読み込んで足し合わせる処理をしましたが、うまくいきません
そもそもcsvに保存してからでなくてもできるように思えるのですが方法がわかりません。
教えてください。
発生している問題・エラーメッセージ
図のようにまるで囲った 9x9の行列が 合計8個あります。
これらを足し合わせて1つの 9x9の行列にしたいです。
該当のソースコード
pythonで作成しております。
まず0で埋めた9x9の行列を作り、要素を埋めた後
一旦csvに保存する動作を8回分、for文で行った後、csvを読み込み足し合わせを試みたが
うまくいきません。
import numpy as np
import pandas as pd
import csv
'''CSVファイルの読み込み'''
list = pd.read_csv("list.csv", header=None)
'''CSVから読んだデータをnumpyの行列に入れる'''
list1 = np.array
list1 = list.values
print(list1)
for i in range((list1.shape[0])):
D = list1[int(i),1]*((list1[int(i),4])-(list1[int(i),6]))+list1[int(i),3]*((list1[int(i),6])-(list1[int(i),2]))+list1[int(i),5]*((list1[int(i),2])-(list1[int(i),4])) S = 0.5 * D f = 1 if i == 0: print(i+1) a1 = ((list1[int(i),3]*list1[int(i),6])-(list1[int(i),5]*list1[int(i),4]))/D a2 = ((list1[int(i),5]*list1[int(i),2])-(list1[int(i),1]*list1[int(i),6]))/D a3 = ((list1[int(i),1]*list1[int(i),4])-(list1[int(i),3]*list1[int(i),2]))/D b1 = ((list1[int(i),4])-(list1[int(i),6]))/D b2 = ((list1[int(i),6])-(list1[int(i),2]))/D b3 = ((list1[int(i),2])-(list1[int(i),4]))/D c1 = ((list1[int(i),5])-(list1[int(i),3]))/D c2 = ((list1[int(i),1])-(list1[int(i),5]))/D c3 = ((list1[int(i),3])-(list1[int(i),1]))/D A11 = S * ((b1 * b1) + (c1 * c1)) A12 = S * ((b1 * b2) + (c1 * c2)) A13 = S * ((b1 * b3) + (c1 * c3)) A21 = S * ((b2 * b1) + (c2 * c1)) A22 = S * ((b2 * b2) + (c2 * c2)) A23 = S * ((b2 * b3) + (c2 * c3)) A31 = S * ((b3 * b1) + (c3 * c1)) A32 = S * ((b3 * b2) + (c3 * c2)) A33 = S * ((b3 * b3) + (c3 * c3)) A = np.array([ [A11,A12,A13], [A21,A22,A23], [A31,A32,A33]]) j = list1[int(i),7] k = list1[int(i),8] l = list1[int(i),9] print(j,k,l) AX = np.zeros((9,9)) AX[int(j-1)][int(j-1)] = A11 AX[int(j-1)][int(k-1)] = A12 AX[int(j-1)][int(l-1)] = A13 AX[int(k-1)][int(j-1)] = A21 AX[int(k-1)][int(k-1)] = A22 AX[int(k-1)][int(l-1)] = A23 AX[int(l-1)][int(j-1)] = A31 AX[int(l-1)][int(k-1)] = A32 AX[int(l-1)][int(l-1)] = A33 with open('A.csv', 'w') as f: f.write(', '.join(map(str, AX)) + "\n") print(A) print(AX) elif i % 2 == 0: print(i+1) a1 = ((list1[int(i),3]*list1[int(i),6])-(list1[int(i),5]*list1[int(i),4]))/D a2 = ((list1[int(i),5]*list1[int(i),2])-(list1[int(i),1]*list1[int(i),6]))/D a3 = ((list1[int(i),1]*list1[int(i),4])-(list1[int(i),3]*list1[int(i),2]))/D b1 = ((list1[int(i),4])-(list1[int(i),6]))/D b2 = ((list1[int(i),6])-(list1[int(i),2]))/D b3 = ((list1[int(i),2])-(list1[int(i),4]))/D c1 = ((list1[int(i),5])-(list1[int(i),3]))/D c2 = ((list1[int(i),1])-(list1[int(i),5]))/D c3 = ((list1[int(i),3])-(list1[int(i),1]))/D A11 = S * ((b1 * b1) + (c1 * c1)) A12 = S * ((b1 * b2) + (c1 * c2)) A13 = S * ((b1 * b3) + (c1 * c3)) A21 = S * ((b2 * b1) + (c2 * c1)) A22 = S * ((b2 * b2) + (c2 * c2)) A23 = S * ((b2 * b3) + (c2 * c3)) A31 = S * ((b3 * b1) + (c3 * c1)) A32 = S * ((b3 * b2) + (c3 * c2)) A33 = S * ((b3 * b3) + (c3 * c3)) A = np.array([ [A11,A12,A13], [A21,A22,A23], [A31,A32,A33]]) j = list1[int(i),7] k = list1[int(i),8] l = list1[int(i),9] print(j,k,l) AX = np.zeros((9,9)) AX[int(j-1)][int(j-1)] = A11 AX[int(j-1)][int(l-1)] = A13 AX[int(j-1)][int(k-1)] = A12 AX[int(l-1)][int(j-1)] = A31 AX[int(l-1)][int(l-1)] = A33 AX[int(l-1)][int(k-1)] = A32 AX[int(k-1)][int(j-1)] = A21 AX[int(k-1)][int(l-1)] = A23 AX[int(k-1)][int(k-1)] = A22 with open('A.csv', 'a') as f: f.write(', '.join(map(str, AX)) + "\n") print(A) print(AX) else: print(i+1) a1 = ((list1[int(i),3]*list1[int(i),6])-(list1[int(i),5]*list1[int(i),4]))/D a2 = ((list1[int(i),5]*list1[int(i),2])-(list1[int(i),1]*list1[int(i),6]))/D a3 = ((list1[int(i),1]*list1[int(i),4])-(list1[int(i),3]*list1[int(i),2]))/D b1 = ((list1[int(i),4])-(list1[int(i),6]))/D b2 = ((list1[int(i),6])-(list1[int(i),2]))/D b3 = ((list1[int(i),2])-(list1[int(i),4]))/D c1 = ((list1[int(i),5])-(list1[int(i),3]))/D c2 = ((list1[int(i),1])-(list1[int(i),5]))/D c3 = ((list1[int(i),3])-(list1[int(i),1]))/D A11 = S * ((b1 * b1) + (c1 * c1)) A12 = S * ((b1 * b2) + (c1 * c2)) A13 = S * ((b1 * b3) + (c1 * c3)) A21 = S * ((b2 * b1) + (c2 * c1)) A22 = S * ((b2 * b2) + (c2 * c2)) A23 = S * ((b2 * b3) + (c2 * c3)) A31 = S * ((b3 * b1) + (c3 * c1)) A32 = S * ((b3 * b2) + (c3 * c2)) A33 = S * ((b3 * b3) + (c3 * c3)) A = np.array([ [A11,A12,A13], [A21,A22,A23], [A31,A32,A33]]) j = list1[int(i),7] k = list1[int(i),8] l = list1[int(i),9] print(j,k,l) AX = np.zeros((9,9)) AX[int(j-1)][int(j-1)] = A11 AX[int(j-1)][int(l-1)] = A13 AX[int(j-1)][int(k-1)] = A12 AX[int(l-1)][int(j-1)] = A31 AX[int(l-1)][int(l-1)] = A33 AX[int(l-1)][int(k-1)] = A32 AX[int(k-1)][int(j-1)] = A21 AX[int(k-1)][int(l-1)] = A23 AX[int(k-1)][int(k-1)] = A22 with open('A.csv', 'a') as f: f.write(', '.join(map(str, AX)) + "\n") print(A) print(AX)
'''CSVファイルの読み込み'''
ELEM = pd.read_csv("A.csv", header=None)
'''CSVから読んだデータをnumpyの行列に入れる'''
list2 = np.array
list2 = ELEM.values
回答1件
あなたの回答
tips
プレビュー