Не удалось преобразовать число с плавающей запятой 64 в число с плавающей запятой 32 в Python

Я попытался преобразовать данные из типа данных с плавающей запятой 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, используя оба метода. Но ничего не работает.

df.astype('float32')ничего не делает. В каждом примере, который вы показываете, вы просто выбрасываете результат, потому что не присваиваете его обратно. Это не более чем опечатка.
roganjosh 15.06.2024 06:28
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Код

Ознакомьтесь с объявлениями и обязательно задавайте вопросы с минимальным и воспроизводимым примером. Получить ответы сложнее, если нам придется читать ваш длинный код без воспроизводимого образца.

минимальный и воспроизводимый пример:

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 не меняют оригинал в результате применения функции.

извините, я соответствующим образом отредактировал код.

Stocavista 15.06.2024 06:20

Пробовали np.float32?

Дополнительная информация: https://numpy.org/doc/stable/user/basics.types.html#:~:text=x%20%3D%20np.float32(1.0)%0A%3E%3E%3E

Другие вопросы по теме