I am running into issues with how I am using append operator in python 3.x. In my python code, I am trying to remove data points that has y value of 0. My data looks like this:
x y
400.01 0.000e0
420.02 0.000e0
450.03 10.000e0
48.04 2.000e0
520.05 0.000e0
570.06 0.000e0
570.23 5.000e0
600.24 0.000e0
620.25 3.600e-1
700.26 8.400e-1
900.31 2.450e0
I want to extract data that fall under a certain x range. For instance, I would like to get x and y values where x is greater than 520 but less than 1000.
Desired output would look like..
x y
520.05 0.000e0
570.06 0.000e0
570.23 5.000e0
600.24 0.000e0
620.25 3.600e-1
700.26 8.400e-1
900.31 2.450e0
The code I have so far looks like below.
import numpy as np
import os
myfiles = os.listdir('input')
for file in myfiles:
with open('input/'+file, 'r') as f:
data = np.loadtxt(f,delimiter='\t')
for row in data: ## remove data points where y is zero
data_filtered_both = data[data[:,1] != 0.000]
x_array=(data_filtered_both[:,0])
y_array=(data_filtered_both[:,1])
y_norm=(y_array/np.max(y_array))
x_and_y= np.array([list (i) for i in zip(x_array,y_array)])
precursor_x=[]
precursor_y=[]
for precursor in row: ## get data points where x is
precursor = x_and_y[:, np.abs(x_and_y[0,:]) > 520 and np.abs(x_and_y[0,:]) <1000]
precursor_x=np.array(precursor[0])
precursor_y=np.array(precursor[1])
I get an error message that says..
File "<ipython-input-45-0506fab0ad9a>", line 4, in <module>
precursor = x_and_y[:, np.abs(x_and_y[0,:]) > 2260 and np.abs(x_and_y[0,:]) <2290]
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
How should I go about this? Any recommended operator that I could use?
P.S I realize pandas dataframe is quite useful to deal with dataset like this. I am not very familiar with pandas language, but open to using it if necessary. Therefore, I will add pandas as my tag as well.