Невозможно преобразовать данные массива из dtype ('float64') в dtype ('int64') согласно правилу 'safe'!Функция Astype между int и float - PullRequest
0 голосов
/ 14 декабря 2018

Я хочу построить x, y с PCA, но я получаю эту проблему приведения, несмотря на то, что мой список int и (y, x) с плавающей точкой:

    csv = np.genfromtxt ('main_contentieux_IPLSCRS_dataset.csv', 
    delimiter=";")
    y = csv[:,0]
    x = csv[:,1:]


    fig = plt.figure(1, figsize=(8, 6))
    plt.clf()
    ax = Axes3D(fig, rect=[0, 0, .95, 1], elev=48, azim=134)

    plt.cla()
    pca = decomposition.PCA(n_components=4)
    pca.fit(x)
    X_fits = pca.transform(x)
    for name, label in [('Aixe en provance', 0), ('Paris', 1), 
      ('Versailles', 2)]:
       ax.text3D(X_fits[y == label, 0].mean(),X_fits[y == label, 
       1].mean()+1.5,X_fits[y == label, 
       2].mean(),name,horizontalalignment='center',bbox=dict(alpha=.8, 
       edgecolor='w', facecolor='w'))

   # Reorder the labels to have colors matching the cluster results

   y = np.choose(y,[0,2,1]).astype(np.float)

Ошибка в приведении:

     y = np.choose(y,[0,2,1]).astype(np.float)

     y is : <class 'numpy.float64'>  and my list [0,2,1] contain int

     ** x and y contains float values,so the problem is in  the casting  when i  try to use (astype) function !  I want to fix it , ** 

1 Ответ

0 голосов
/ 14 декабря 2018

np.choose ожидает массив int в качестве первого аргумента, но вы, похоже, передаете float.Вы можете привести первый аргумент, чтобы смягчить это:

y = np.choose(y.astype(int), [0,2,1]).astype(float)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...