Numpy массив добавления изменяет свой тип - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть массив, который должен сохранять свой тип dtype фиксированным. Однако после оператора добавления его тип dtype изменяется. Как я могу добавить значения без изменения dtype?

vertices = array([0.5, 0.0, 0.0, 1.0, 0.0, 0.0,
                  0.0, 0.5, 0.0, 0.0, 1.0, 0.0,
                  0.0, -0.5, 0.0, 0.0, 0.5, 0.0], dtype=np.float32)
print(vertices.dtype)
vertices = append(vertices, [-0.5, 0.0, 0.0, 0.0, 0.0, 1.0])
print(vertices.dtype)

Вывод: float32 float64

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020
from numpy import *
import numpy as np
vertices = array([0.5, 0.0, 0.0, 1.0, 0.0, 0.0,
                  0.0, 0.5, 0.0, 0.0, 1.0, 0.0,
                  0.0, -0.5, 0.0, 0.0, 0.5, 0.0], dtype=np.float32)
print(vertices.dtype)
vertices = append(vertices, np.array([-0.5, 0.0, 0.0, 0.0, 0.0, 1.0], dtype=np.float32))
print(vertices.dtype)

random_arr = [-0.5, 0.0, 0.0, 0.0, 0.0, 1.0]
print(np.array(random_arr).dtype)

float32
float32
float64

По умолчанию numpy назначает тип данных float64 для вашего массива float (проверьте последний random_arr), поэтому, как только вы объедините один массив float32 и один массив float64, очевидно, что окончательный массив будет приведен к float64. Итак, просто укажите dtype при создании numpy массивов, чтобы быть безопасными.

1 голос
/ 03 апреля 2020

Вы можете добавить новые данные в виде массива numpy, передавая тип при преобразовании.

import numpy as np

vertices = np.array([0.5, 0.0, 0.0, 1.0, 0.0, 0.0,
                  0.0, 0.5, 0.0, 0.0, 1.0, 0.0,
                  0.0, -0.5, 0.0, 0.0, 0.5, 0.0], dtype=np.float32)
print(vertices.dtype)
vertices = np.append(vertices, np.array([-0.5, 0.0, 0.0, 0.0, 0.0, 1.0], dtype=np.float32))
print(vertices.dtype)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...