[英]ValueError: setting an array element with a sequence symbolic
我是python的初學者。 我有以下代碼:
import Deformation
import Qtheta
import numpy as np
import sympy as sp
def champs_de_contraintes(epaisseurs,angles,El,Et,Glt,Nult):
E0=np.mat('[0;0;0]') #inizialising E0
K=np.mat('[0;0;0]') #inizialising K
E0K=np.mat('[0;0;0;0;0;0]') #inizialising K
E0K = Deformation.defos(epaisseurs,angles,El,Et,Glt,Nult) #function that return a 6x1 matrix type <class 'numpy.matrixlib.defmatrix.matrix'>
E0=E0K[:3] #Slicing E0K into 2 vectors E0 and K
K=E0K[3:]
nb_composantes = 3 #sigma x, sigma y, taux xy
Sigmaxy=np.zeros((nb_composantes,len(epaisseurs))) #sigma x, sigma y, taux xy, Array
#===============This bloc calculate the altitude of a ply =================
z=[]
e=[]
z.append(-(np.sum(epaisseurs))/2)
for k in (range(len(epaisseurs))): #initialising e[k]
e[len(e):] = [0] #Values to add to get the altitude
for i in (range(len(epaisseurs))):
e[i]= e[i-1] + epaisseurs[i] #sum e
z[len(z):] = [z[0] + e[i]] #Altitude
#===========================This bloc calculate a vector===================
for i in (range(len(epaisseurs))):
newcolumn= Qtheta.Qtheta(angles[i],El,Et,Glt,Nult)*E0+z[i]*Qtheta.Qtheta(angles[i],El,Et,Glt,Nult)*K #z is the altitude
#3x1 = 3x3*3x1 + 1x1*3x3*3x1
for m in (range(len(newcolumn))):
Sigmaxy[i,m]=newcolumn[m]
return Sigmaxy
這返回我錯誤
Sigmaxy[i,m]=newcolumn[m]
ValueError: setting an array element with a sequence
基本上,我想做的是將向量“ newcolumn”保存在Sigmaxy矩陣的新列中。 我認為收到此錯誤是因為“ newcolumn”是象征性的。 實際上,E0和K取決於2個變量。
有人可以幫我嗎?
提前致謝 !
如果要以這種方式設置數組元素,則需要確保形狀匹配。
如果嘗試這樣的操作,則會拋出您得到的錯誤:
my_1d_array = np.array([1,2,3])
my_1d_array[0] = [4, 5, 6]
正如錯誤所解釋的,您試圖將單個元素設置為一系列元素,這是不可能的。 調試您的代碼,並確保Sigmaxy[i,m]
和newcolumn[m]
的形狀( .shape
)匹配。
使用正確的大小初始化數組,並在開始時為所有元素留出空間。 如果您不知道確切的大小,則可以通過添加列來創建更大的數組,請參閱其他問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.