Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python cdist error ValueError: XA must be a 2-dimensional array

Tags:

python

here's a shortened version of my code:

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

test[y] printed is

[  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]

training printed (shortened) is:

[[  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]]

Both have 31 columns. Is there a way to find the distances between array XA and each row of array XB and have the distances outputted into another array?

Thank you very much!

like image 488
Andy Hadjigeorgiou Avatar asked Dec 08 '12 01:12

Andy Hadjigeorgiou


1 Answers

You need to change them into 2-D arrays:

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)
like image 92
user3067175 Avatar answered Sep 19 '22 14:09

user3067175