繁体   English   中英

ValueError:设置具有序列符号的数组元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM