Saya memiliki file teks dengan koordinat

x1 y1 z1

x2 y2 z2

Sekarang saya ingin tahu di mana y-coordinate value dari x melebihi titik tertentu. Bagaimana aku melakukan itu?

Sebagai langkah pertama saya mencoba menggunakan function dengan lists:

def coordinates(dataset):

    x = np.array(0)
    y = np.array(0)
    z = np.array(0)

    dataset = open(dataset,'r')

    dataset = line.strip()
    dataset = line.split()

    i=0
    while i<10:
        x = np.append(x,float(line[0]))
        y = np.append(y,float(line[1]))
        z = np.append(y,float(line[2]))
        i+=1

    print x
    return x,y

(Saya menggunakan print x untuk memeriksa hasil di terminal) Saat menggunakan function sepertinya line.split() hanya menggunakan baris terakhir dan membaginya. Jadi hasil di terminal adalah [0 x10 x10 x10 x10 x10 x10 ...].

Adakah yang tahu cara memperbaikinya? Atau ada solusi lain/lebih baik?

0
siny 10 November 2017, 18:49

1 menjawab

Jawaban Terbaik

Gunakan fungsi np.loadtxt. Setelah Anda memiliki semua koordinat Anda dalam tiga array

from io import StringIO 
import numpy as np

### simulates your input file
c = StringIO("0 1 2 \n 3 4 5 \n 6 7 8")

d=np.loadtxt(c) # file readout into a 2D array
x=d[:,0]        # gets x coordinate array
y=d[:,1]
z=d[:,2]

print (x)
print (y)
print (z)
###

xQ = 3.5                       # your "exceed" coordinate
print (y[x>xQ][0])             # returns the first y value where x>xQ

Baris terakhir menggunakan bahwa [x>xQ] sebenarnya adalah array topeng boolean yang dapat kita terapkan ke koordinat lain, y dalam kasus Anda.

0
yevgeniy 15 November 2017, 11:47