2017-08-14 61 views
0

我試圖將numpy nd數組轉換成熊貓列, 但數據與括號來。numpy nd數組到熊貓列沒有[]

這是我的NP陣列:

array([[[ 7.10105920e+07], 
     [ 9.18736320e+07], 
     [ 8.35562800e+07], 
     [ 7.16590640e+07], 
     [ 8.28060960e+07], 
     [ 6.77042000e+07], 
     [ 7.07195360e+07], 
     [ 1.04754616e+08], 
     [ 7.27420400e+07], 
     [ 7.33461760e+07], 
     [ 6.34156040e+07], 
     [ 8.00440800e+07], 

這是我如何發送到數據幀:

predictions = pd.DataFrame() 
predictions['y_test'] = Y_test[0].tolist() 

這就是我得到:

  y_test 
0 [71010592.0] 
1 [91873632.0] 
2 [83556280.0] 
3 [71659064.0] 
4 [82806096.0] 
5 [67704200.0] 
6 [70719536.0] 
7 [104754616.0] 
8 [72742040.0] 
9 [73346176.0] 

如何刪除括號([])?

回答

4

它看起來像一個三維陣列。您可以第一個元素傳遞到數據幀的構造函數:

pd.DataFrame(Y_test[0], columns=['y_test']) 
Out: 
     y_test 
0 71010592.0 
1 91873632.0 
2 83556280.0 
3 71659064.0 
4 82806096.0 
5 67704200.0 
6 70719536.0 
7 104754616.0 
8 72742040.0 
9 73346176.0 
10 63415604.0 
11 80044080.0 

從Divakar一個更好的選擇是使用擠壓:

pd.DataFrame(arr.squeeze(), columns=['y_test']) 
Out: 
     y_test 
0 71010592.0 
1 91873632.0 
2 83556280.0 
3 71659064.0 
4 82806096.0 
5 67704200.0 
6 70719536.0 
7 104754616.0 
8 72742040.0 
9 73346176.0 
10 63415604.0 
11 80044080.0 
+1

而不是被不屑於找出非單昏暗,我只想用'squeeze'。 – Divakar

+0

@Divakar是好多了。謝謝。 – ayhan

3

看來你有一個三維陣列,你可以嘗試:

predictions['y_test'] = Y_test[0,:,0] 

predictions 

#  y_test 
#0 71010592.0 
#1 91873632.0 
#2 83556280.0 
#3 71659064.0 
#4 82806096.0 
#5 67704200.0 
#6 70719536.0 
#7 104754616.0 
#8 72742040.0 
#9 73346176.0 
#10 63415604.0 
#11 80044080.0 
1

幾個方法,你可以做

選項1. Numpy索引

predictions['y_test'] = Y_test[0,:,0] 

選項2拼合使用列表理解

predictions['y_test'] = [x[0] for x in Y_test[0]] 

選項3 numpy的扁平化功能

predictions['y_test'] = Y_test.flatten() 
0
prediction = pd.DataFrame(Y_test.flatten(), columns=['y_test']) 
prediction.head() 

    y_test 
    0  1.0 
    1  1.0 
    2  1.0 
    3  1.0 
    4  1.0