Python | Не работает приведение типа

Рейтинг: 0Ответов: 1Опубликовано: 05.04.2023

Пытаюсь произвести приведение типа, но оно не работает.

print(type(res))

<class 'numpy.ndarray'>

 print(type(res[0][0]))

<class 'numpy.complex128'>

res[0][0] = int(res[0][0].real) - пытаюсь привести тип
print(type(res[0][0]))

<class 'numpy.complex128'> - тип не изменился, почему?

Ответы

▲ 7Принят

метод .real работает с массивом, а не с элементом массива numpy. поэтому в вашем случае корректно было сделать так:

import numpy as np

a = np.zeros((3,3), dtype=np.complex_)
print(type(a))
print(type(a[0][0]))
a = a.real.astype(int)
print(type(a[0][0]))
<class 'numpy.ndarray'>
<class 'numpy.complex128'>
<class 'numpy.int32'>

массивы numpy не поддерживают множественные типы, все элементы должны быть одного типа, и всегда имплицитно приводятся к наиболее "сложному" из имеющихся, если иное не было задано явно.