Python: tulis koordinat bentuk numpy

Dalam skrip python saya, saya ingin menulis koordinat bentuk numpy ke file teks. Saya mengimpor koordinat dan definisi elemen lalu menggunakan bentuk numpy untuk menyesuaikan koordinat.

Lalu saya ingin menulis file teks tempat saya menulis koordinat yang disesuaikan.

Namun dengan skrip saya saat ini, hanya menghasilkan 6 koordinat. Saya pikir ini karena definisi saya tentang s = new_triangle.shape (lihat skrip di bawah)

Bagaimana cara mendefinisikannya sehingga semua koordinat baru ditulis ke dalam file keluaran?

newcoords = [[0.0, 0.0], [1.0, 0.0], [0.0, 1.0], [0.0, 0.0], [1.0, 1.0], [0.0, 1.0], [0.0, 1.0], [1.0, 1.0], [0.0, 2.0], [0.0, 2.0], [1.0, 1.0], [1.0, 2.0], [1.0, 1.0], [2.0, 1.0], [1.0, 2.0], [1.0, 2.0], [2.0, 1.0], [2.0, 2.0], [1.0, 1.0], [2.0, 0.0], [2.0, 1.0], [1.0, 0.0], [2.0, 0.0], [1.0, 1.0]]
newelems = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20], [21, 22, 23]]

import numpy as np

#define triangles
triangles = np.array([[newcoords[e] for e in newelem] for newelem in newelems])

#find centroid of each triangle
CM = np.mean(triangles,axis=1)

#find vector from each point in triangle pointing towards centroid
point_to_CM_vectors = CM[:,np.newaxis] - triangles

#calculate similar triangles 1% smaller
new_triangle = triangles + 0.01*point_to_CM_vectors

#Define new coordinates
newcoord = []
newcoord.append(list(zip(*new_triangle)))
s = new_triangle.shape

print 'newcoords =', newcoords
print 'newcoord =', newcoord
print s

#generate output
fout = open('_PartInput4.inp','w')
fout.write('*Node-new_triangle\n')
for i, x in enumerate(new_triangle.reshape(s[1]*s[2], len(newelems))):
    fout.write("{}, {}, {}\n".format(i+1, x[0], x[1]))
fout.close()

Terima kasih sebelumnya atas bantuan apa pun!


person user1967364    schedule 17.04.2013    source sumber
comment
lihat jawaban saya atas pertanyaan Anda sebelumnya. s[1]*s[2] seharusnya s[0]*s[1]   -  person YXD    schedule 17.04.2013
comment
Terima kasih banyak! itu memang berhasil.   -  person user1967364    schedule 17.04.2013


Jawaban (1)


Pak E memberikan jawabannya sebelumnya:

#generate output
with open('_PartInput3.inp','w') as fout:
    fout.write('*Node-new_triangle\n')
    s = new_triangle.shape
    for i, x in enumerate(new_triangle.reshape(s[0]*s[1], 2)):
        fout.write("{}, {}, {}\n".format(i+1, x[0], x[1]))
person user1967364    schedule 17.04.2013