Python 如何获取NumPy数组中的特定行?
我想得到第三个数字是0或1的行 下面是data.txt:Python 如何获取NumPy数组中的特定行?,python,python-3.x,numpy,Python,Python 3.x,Numpy,我想得到第三个数字是0或1的行 下面是data.txt: 34.62365962451697,78.0246928153624,0 30.28671076822607,43.89499752400101,0 35.84740876993872,72.90219802708364,0 60.18259938620976,86.30855209546826,1 79.0327360507101,75.3443764369103,1 将.txt加载到numpy数组后: data_np=np.load
34.62365962451697,78.0246928153624,0
30.28671076822607,43.89499752400101,0
35.84740876993872,72.90219802708364,0
60.18259938620976,86.30855209546826,1
79.0327360507101,75.3443764369103,1
将.txt加载到numpy数组后:
data_np=np.loadtxt("ex2data1.txt", delimiter=',')
如何操作?同时使用布尔索引和/或两个条件:
rows_to_keep = data_np[data_np[:,2] == 0 | data_np[:,2] == 1]
使用
前
O/p:
或
筛选第三个数字为0或1的行
O/p
ab.text文件
您可以尝试以下方法:
new_data_np = []
for i in range(data_np.shape[0]):
if data_np[i,2]==0 or data_np[i,2]==1:
print(data_np[i,:])
#store data_np[i,:]
new_data_np.append(data_np[i,:])
OP的可能副本要求不同的内容:他们想要第三列为0或1的行,而不是只加载第三列column@GPhilo答案已更新。
[0. 0. 0. 1. 1.]
import numpy as np
def filter_lines(f):
for i, line in enumerate(f):
t_n = line.split(",")[2][0].strip()
if t_n == '0' or t_n == '1':
yield line
with open("ab.text") as f:
data_np=np.loadtxt(filter_lines(f), delimiter=',')
print(data_np)
[[34.62365962 78.02469282 0. ]
[30.28671077 43.89499752 0. ]
[35.84740877 72.90219803 0. ]
[60.18259939 86.3085521 1. ]
[79.03273605 75.34437644 1. ]
[99.03273605 95.34437644 1. ]]
34.62365962451697,78.0246928153624,0
30.28671076822607,43.89499752400101,0
35.84740876993872,72.90219802708364,0
60.18259938620976,86.30855209546826,1
79.0327360507101,75.3443764369103,1
82.0327360507101,76.3443764369103,2
89.0327360507101,75.3443764369103,3
99.0327360507101,95.3443764369103,1
new_data_np = []
for i in range(data_np.shape[0]):
if data_np[i,2]==0 or data_np[i,2]==1:
print(data_np[i,:])
#store data_np[i,:]
new_data_np.append(data_np[i,:])