tl; dr: use .values
Ваша проблема заключается в том, что вы создаете свои массивы numpy, вы передаете ему список, когда яЯ думаю, что вы пытаетесь передать ему фрейм данных:
# This doesn't work
np.array([X])
# This does
np.array(X)
Так что вы можете сделать:
d1= np.array(X)
d2 = np.array(y)
Или еще лучше:
d1 = X.values
d2 = y.values
Чтобы получить:
>>> d1
array([[0.040662, 1.041667],
[0.139757, 1.760417],
[0.144357, 1.190104],
[0.145341, 1.047526],
[0.145401, 1.011882],
[0.148465, 1.00297 ]])
>>> d2
array([1, 2, 1, 1, 1, 1])
Но в итоге ваш конечный результат будет точно таким же, как просто сказать:
z = df.dropna().values
>>> z
array([[0.040662, 1.041667, 1. ],
[0.139757, 1.760417, 2. ],
[0.144357, 1.190104, 1. ],
[0.145341, 1.047526, 1. ],
[0.145401, 1.011882, 1. ],
[0.148465, 1.00297 , 1. ]])
См. docs для метода .values
,который просто дает вам пустое представление кадра данных