我有一個唯一的元素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