2017-09-27 45 views
0

我有一些數據的csv文件,這裏是一個示例:打印NumPy的陣列上頭

Alcohol,Malice acid,Ash,Alcalinity of ash,Magnesium,Total phenols,Flavanoids,Nonflavanoid phenols,Proanthocyanins,Color intensity,Hue,OD280/OD315 of diluted wines,Proline 
1,14.23,1.71,2.43,15.6,127,2.8,3.06,0.28,2.29,5.64,1.04,3.92 
1,13.2,1.78,2.14,11.2,100,2.65,2.76,0.26,1.28,4.38,1.05,3.4 
1,13.16,2.36,2.67,18.6,101,2.8,3.24,0.3,2.81,5.68,1.03,3.17 

我在csv文件讀取和我的數組轉換爲3個numpy的數組:

wine_data_file = open("wine.csv","r") 

wine_data_reader = csv.reader(wine_data_file, delimiter=",") 

wine_data = [] 
wine_labels = [] 
wine_columns = [] 

#Read each line of wine.csv 
count = 0 
for row in wine_data_reader: 

    if count <= 0: 
     wine_columns += [row[1:]] 
    else: 
     wine_labels += [int(row[0])] 
     wine_data += [map(float,row[1:])] 
    count = count + 1 

wine_data = np.array(wine_data,dtype=float) 
wine_labels = np.array(wine_labels) 
wine_columns = np.array(wine_columns) 

這些numpy數組將包含列標題,標籤(每行的第一個數字)和數據。

我能夠把它打印出來的結果:

print wine_data[wine_labels == 1] 

這將讓我的每一行中wine_data是具有1標籤(酒精),但我不能做同樣與此:

print wine_data[wine_columns == "Hue"] 

我的問題是,如何能夠得到我在Hue的numpy數組中的每個索引。

期望的結果:

[[5.64],[4.38],[5.68]] 
+0

你試過了什麼?請給我們一些信息! – Boggartfly

+0

我想你想要熊貓。 –

+0

@PauloScardine我必須使用一個numpy數組,它用於學校作業。 –

回答

1

我們先考慮爲什麼

print wine_data[wine_labels == 1] 

作品。 wine_labels == 1的計算結果爲[ True True True],這意味着您可以選擇wine_data陣列中三行中的每一行。

當您嘗試評估

print wine_data[wine_columns == "Hue"] 

然後過濾wine_columns == "Hue"評估爲[[False False False False False False False False False True False False]]。請注意雙括號:wine_columns是一行和12列的二維數組。這使得它很難用作wine_data數組的選擇器。

那麼讓我們來製作這個一維數組:(wine_columns == "Hue")[0][False False False False False False False False False True False False]。現在,我們要以此爲在wine_data列選擇,我們也希望任何行:

print wine_data[:,(wine_columns == "Hue")[0]] 

[[ 5.64], [ 4.38], [ 5.68]] 

這是你想要的,但請記住,它仍然是一個二維數組(3行,1列)。

1

數據是二維的,和你申請一個布爾指數的第一維。相反,你想將它應用到第二維...

#columns ----------| 
#rows-----|  | 
#   V  V 
wine_data[:,wine_columns == 'Hue']