Python 根据3个列表创建一个矩阵
我试图根据从输入文件读取的3个不同列表创建一个矩阵。 我需要一个由3列组成的矩阵:Col_2首先表示x坐标,然后Col_3表示y坐标,Col_4表示第三个位置的z坐标 目标是将此矩阵输入ConvexHull函数,并获得一个数字,然后将其附加到另一个数组中 现在我正在使用这段代码,但是没有创建输出文件,我认为这是因为错误的矩阵。(此代码在ACT扩展的脚本中调用) 提前感谢您的帮助!Python 根据3个列表创建一个矩阵,python,matrix,ansys,Python,Matrix,Ansys,我试图根据从输入文件读取的3个不同列表创建一个矩阵。 我需要一个由3列组成的矩阵:Col_2首先表示x坐标,然后Col_3表示y坐标,Col_4表示第三个位置的z坐标 目标是将此矩阵输入ConvexHull函数,并获得一个数字,然后将其附加到另一个数组中 现在我正在使用这段代码,但是没有创建输出文件,我认为这是因为错误的矩阵。(此代码在ACT扩展的脚本中调用) 提前感谢您的帮助! 我稍微修改了你的脚本: import scipy as sp import numpy as np inputf
我稍微修改了你的脚本:
import scipy as sp
import numpy as np
inputfile = "path/to/coordinate/file"
Col_1=[]
Col_2=[]
Col_3=[]
Col_4=[]
# replaced while with for-loop
for line in open(inputfile):
v = line.split(',')
Col_1.append(float((v[0]))) #reading column 1
Col_2.append(float((v[1]))) #reading column 2
Col_3.append(float((v[2]))) #reading column 3
Col_4.append(float((v[3]))) #reading column 4
from scipy.spatial import ConvexHull
# Replaced append with direct assignment
NodeNo=Col_1
# Added a matrix transpose and fixed brackets
Matrix=np.array([Col_2,Col_3,Col_4]).T
myhull = ConvexHull(Matrix)
vol= myhull.volume
ar = myhull.area
scaleFactor = 1
myICV = vol-(ar*scaleFactor)/1000
print(myICV)
NodeNo=np.array(Col_1)
ICV=np.full_like(NodeNo,myICV)
仍然不工作。。我在问题中添加了输入文件的图片。在我的案例中,不计算ICVunfortunately@LaraDeliège您是将此脚本作为子进程调用还是在ACT shell中调用?为什么在while循环中而不是for循环中使用readline()作为脚本?因为Ironpython不支持中的scipy库。终端显示“Qhull内部错误”“qh_maxsimplex所需的qh.MAXwidth”,它还表示对于np.CONTAINATE:轴1超出维度1数组的界限。所以,让我相信矩阵是不完整的,但当我打印Col_1的长度时,它说的是正确的数字
import scipy as sp
import numpy as np
inputfile = "path/to/coordinate/file"
Col_1=[]
Col_2=[]
Col_3=[]
Col_4=[]
# replaced while with for-loop
for line in open(inputfile):
v = line.split(',')
Col_1.append(float((v[0]))) #reading column 1
Col_2.append(float((v[1]))) #reading column 2
Col_3.append(float((v[2]))) #reading column 3
Col_4.append(float((v[3]))) #reading column 4
from scipy.spatial import ConvexHull
# Replaced append with direct assignment
NodeNo=Col_1
# Added a matrix transpose and fixed brackets
Matrix=np.array([Col_2,Col_3,Col_4]).T
myhull = ConvexHull(Matrix)
vol= myhull.volume
ar = myhull.area
scaleFactor = 1
myICV = vol-(ar*scaleFactor)/1000
print(myICV)
NodeNo=np.array(Col_1)
ICV=np.full_like(NodeNo,myICV)