Я попытался преобразовать данные из типа данных с плавающей запятой 64 в число с плавающей запятой 32. Я использовал как метод pandas, так и pytorch, но безрезультатно. Набор данных взят из проекта Kaggle Titanic. Код следующий:
from torch import nn
import torch
import pandas as pd
import numpy as np
df = pd.DataFrame([[1.1, 2.1], [3.1, 4.1],[5.1,6.1]], columns=['col1', 'col2'])
df.astype('float32')
print(df.dtypes)
df.astype(np.float32)
print(df.dtypes)
a=torch.tensor(df.loc[1][['col1']])
a.to(torch.float32)
print(a)
и получить результат
col1 float64
col2 float64
dtype: object
col1 float64
col2 float64
dtype: object
tensor([3.1000], dtype=torch.float64)
Я пытался использовать оба метода, предоставленные pandas и pytorch. Хотя это не вызывает никаких ошибок, оно не работает. И я не могу поместить его в слои нейронной сети, поскольку для этого требуется тип данных float 32. Я также пытался преобразовать их в int, int64, int32, используя оба метода. Но ничего не работает.
Подобные вопросы задавались раньше: Тип данных не меняется после использования astype , Python — приведение типа столбца pandas с «astype» не работает , Почему тип данных столбца dataframe не меняется , pandas.dataframe.astype не преобразует dtype и, возможно, многие другие.






Код
Ознакомьтесь с объявлениями и обязательно задавайте вопросы с минимальным и воспроизводимым примером. Получить ответы сложнее, если нам придется читать ваш длинный код без воспроизводимого образца.
минимальный и воспроизводимый пример:
import pandas as pd
df = pd.DataFrame([[1.1, 2.1], [3.1, 4.1]], columns=['col1', 'col2'])
дф:
col1 col2
0 1.1 2.1
1 3.1 4.1
chk dтип df
print(df.dtypes)
Распечатать:
col1 float64
col2 float64
dtype: object
конвертировать в float32
out = df.astype('float32')
print(out.dtypes)
Оринт:
col1 float32
col2 float32
dtype: object
Большинство функций в Pandas не меняют оригинал в результате применения функции.
извините, я соответствующим образом отредактировал код.
Пробовали np.float32?
Дополнительная информация: https://numpy.org/doc/stable/user/basics.types.html#:~:text=x%20%3D%20np.float32(1.0)%0A%3E%3E%3E
df.astype('float32')ничего не делает. В каждом примере, который вы показываете, вы просто выбрасываете результат, потому что не присваиваете его обратно. Это не более чем опечатка.