Ich benutze Python 3.6 und numpy.Python/numpy Array-Partitionierung
Von einer hdf5-Datei las ich eine Spalte einer Tabelle, die ein 2D-Array ist.
Jede Zeile des Arrays enthält die IDs der Knoten eines finiten Elements.
Die Tabelle ist so strukturiert, dass es sowohl niedrigere als auch höhere Ordnung Elemente in der gleichen Tabelle (die, aber ich nicht ändern kann ein Freiheitsgrad saugt)
wie dies also das Array (mit Ausnahme sieht etwas hält dass es Millionen von Zeilen potentiell)
[[1,2,3,4,0,0,0,0], #<- 4 Node quad data packed with zeros
[3,4,5,6,0,0,0,0],
[7,8,9,10,11,12,13,14], #<- 8 node quad in the same table as 4 node quad
[15,16,17,18,19,20,21,22]]
ich brauche diese Informationen in zwei getrennte Felder zu trennen - eine für den 4 Knoten ein für 8 Knoten Zeilen durchgeführt.
[[1,2,3,4],
[3,4,5,6]]
[[7,8,9,10,11,12,13,14],
[15,16,17,18,19,20,21,22]]
Moment über den 2D-Array ich Iterieren, in jeder Zeile den Wert des fünften Wertes überprüft und zwei Index Erstellen von Arrays - einer Zeile der Knoten 4 Reihen und einen der 8 Knoten zu identifizieren.
for element in elements:
if element[5] == 0:
tet4indices.append(index)
else:
tet10indices.append(index)
index+=1
Dann benutze ich Index Array Slicing die beiden Arrays
tet4s=elements[tet4indices, 0:5]
tet10s=elements[tet10indices,0:10]
Die oben genannten Arbeiten zu bekommen, aber es scheint ein bisschen hässlich.
Wenn jemand eine bessere Lösung hat, würde ich dankbar sein, darüber zu hören .....
Vielen Dank im Voraus,
Doug
sind die 4 & 8 Elementreihen in separaten Gruppen oder gemischt? – hpaulj
Die 4 und 8 Elementreihen können gemischt werden – max375
@ max375 Ich fügte eine allgemeine Antwort hinzu, die Ihren Fall behandelt. – kmario23