2012-12-08 27 views
3

這裏是我的代碼縮短版本:蟒cdist錯誤ValueError異常:XA必須是一個2維陣列

`dist_array = ssd.cdist(test[y], training)` 

測試[Y]印刷是

[ 0.00000000e+00 1.79900000e+01 1.03800000e+01 1.22800000e+02 
    1.00100000e+03 1.18400000e-01 2.77600000e-01 3.00100000e-01 
    1.47100000e-01 2.41900000e-01 7.87100000e-02 1.09500000e+00 
    9.05300000e-01 8.58900000e+00 1.53400000e+02 6.39900000e-03 
    4.90400000e-02 5.37300000e-02 1.58700000e-02 3.00300000e-02 
    6.19300000e-03 2.53800000e+01 1.73300000e+01 1.84600000e+02 
    2.01900000e+03 1.62200000e-01 6.65600000e-01 7.11900000e-01 
    2.65400000e-01 4.60100000e-01 1.18900000e-01] 

訓練印刷(縮短)是:

[[ 0.00000000e+00 1.92100000e+01 1.85700000e+01 ..., 2.09100000e-01 
    3.53700000e-01 8.29400000e-02] 
[ 0.00000000e+00 1.47100000e+01 2.15900000e+01 ..., 1.83400000e-01 
    3.69800000e-01 1.09400000e-01] 
[ 1.00000000e+00 1.30500000e+01 1.93100000e+01 ..., 1.11100000e-02 
    2.43900000e-01 6.28900000e-02] 
..., 
[ 0.00000000e+00 1.66000000e+01 2.80800000e+01 ..., 1.41800000e-01 
    2.21800000e-01 7.82000000e-02] 
[ 0.00000000e+00 2.06000000e+01 2.93300000e+01 ..., 2.65000000e-01 
    4.08700000e-01 1.24000000e-01] 
[ 1.00000000e+00 7.76000000e+00 2.45400000e+01 ..., 0.00000000e+00 
    2.87100000e-01 7.03900000e-02]] 

兩者有31列。有沒有辦法找到陣列XA和陣列XB的每一行之間的距離,並將距離輸出到另一個陣列?

非常感謝!

回答

3
import numpy as np 

np.array([1,2,3,4]).shape 

--(4,) 

np.array([1,2,3,4]).reshape(-1,1).shape 

--(4,1) 

np.array([1,2,3,4]).reshape(1,-1).shape 

--(1,4) 
0
from scipy.spatial import distance 

p_a = np.array([4, 0]) 

p_b = np.array([0, 3]) 

p_a = p_a.reshape(1, -1) 

p_b = p_b.reshape(1, -1) 

distance.cdist(p_a, p_b, 'euclidean') 
Out[58]: array([[ 5.]]) 
相關問題