# Error in Python script "Expected 2D array, got 1D array instead:"?

I'm following this tutorial to make this ML prediction:

```    import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style

style.use("ggplot")
from sklearn import svm

x = [1, 5, 1.5, 8, 1, 9]
y = [2, 8, 1.8, 8, 0.6, 11]

plt.scatter(x,y)
plt.show()

X = np.array([[1,2],
[5,8],
[1.5,1.8],
[8,8],
[1,0.6],
[9,11]])

y = [0,1,0,1,0,1]
X.reshape(1, -1)

clf = svm.SVC(kernel='linear', C = 1.0)
clf.fit(X,y)

print(clf.predict([0.58,0.76]))
```

I'm using Python 3.6 and I get error "Expected 2D array, got 1D array instead:" I think the script is for older versions, but I don't know how to convert it to the 3.6 version.

```    X.reshape(1, -1)
```

You are just supposed to provide the `predict` method with the same 2D array, but with one value that you want to process (or more). In short, you can just replace

```    [0.58,0.76]
```

With

```    [[0.58,0.76]]
```

And it should work.

EDIT: This answer became popular so I thought I'd add a little more explanation about ML. The short version: we can only use `predict` on data that is of the same dimensionality as the training data (`X`) was.

In the example in question, we give the computer a bunch of rows in `X` (with 2 values each) and we show it the correct responses in `y`. When we want to `predict` using new values, our program expects the same - a bunch of rows. Even if we want to do it to just one row (with two values), that row has to be part of another array.

From: stackoverflow.com/q/45554008