我有一个唯一的元素ID和节点ID的列表以及存储哪个元素包含哪些节点的数组。每Element_IDs nodes_IDs的数量3-20有所不同,但一个阵列内是恒定的:数组来存储其他数组之间的连接
Elements = np.array(([ 1, 1, 2, 3, 4, ...,, Node_ID_k],
[ 2, 6, 1, 4, 5, ...,, Node_ID_k],
[...]
[Element_ID, Node_ID_1, Nodes_ID_2, ..., Node_ID_k]
现在我需要这两个实体经常连接: 例如获得元素的位置我必须通过Node_ID查找坐标。然后我计算一些东西并且想要为每个节点存储它。所以我需要连接哪个元素包含哪些节点,然后相反,哪些元素属于节点ID。
节点
Nodes = [Node_ID 1, Node_ID 2,Node_ID 3, ... , Node_ID 120000]
我有(120 000例如100出来)的节点的子集的大列表的:
Nodeset = [ Node_ID 1, ..., Node_ID 100]
我发现的条目从“元素”阵列,其中包含以下代码的“节点集”ID:
import numpy as np
def getbyfnodes(Nodeset, Elements):
#nodes per element
npe = 4
#mask
mask_element = np.zeros((Elements.shape[0]), dtype = bool)
mask_nodes = np.zeros_like(Elements[:,1:], dtype = bool)
for i,column in enumerate(Elements[:,1:].T): #check colum wise
mask_nodes[:,i] = np.in1d(column, Nodeset)
mask_element = mask_nodes.sum(axis = 1) == npe #only elements with 'npe' nodes
#reduced size row wise
mask_nodes = mask_nodes[mask_element,:] # reduce Nodes mask for Relevant elements
# Node_ID, Element_ID 1, 2, 3, 4
Set_elements = np.zeros((len(Nodeset),npe + 1))
Set_elements[:,0] = Nodeset
for i,row in enumerate(Elements[mask_element,1:]):
Set_elements[i,:] = row[mask_nodes[i,:]]
return Set_elements
如何获得其他方式? 我想有一个阵列的,其列出了“节点组”第一的节点ID,然后该元素ID属于该节点:
Nodes = np.array(([Node_ID 1 , Element_ID_1, Element_ID_2, ..., Element_ID_k],
[...],
[Node_ID 100 , Element_ID_1, Element_ID_2, ..., Element_ID_k]))
理想我希望有存储的
连接或指针数组元件1包含节点1,节点2,节点3和节点4
节点1是元件1的一部分,元件5,元件8和元件9
使用这样THI ng会使得使用一组数据更容易计算其他组的数据!
如果问题不明确,请让我知道,我很不确定标题匹配的实际问题! – k0ngcrete