Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据3个列表创建一个矩阵_Python_Matrix_Ansys - Fatal编程技术网

Python 根据3个列表创建一个矩阵

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

我试图根据从输入文件读取的3个不同列表创建一个矩阵。 我需要一个由3列组成的矩阵:Col_2首先表示x坐标,然后Col_3表示y坐标,Col_4表示第三个位置的z坐标

目标是将此矩阵输入ConvexHull函数,并获得一个数字,然后将其附加到另一个数组中

现在我正在使用这段代码,但是没有创建输出文件,我认为这是因为错误的矩阵。(此代码在ACT扩展的脚本中调用)

提前感谢您的帮助!


我稍微修改了你的脚本:

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)