Mam tablicę numpy, którą chcę przekonwertować z obiektu na złożony. Jeśli wezmę tę tablicę jako dtype sznurka i przekształcić go, nie ma problemu:Konwertowanie tablicy numty obiektów typu dtype na typ dtype
In[22]: bane
Out[22]: array(['1.000027337501943-7.331085223659654E-6j',
'1.0023086995640738-1.8228368353755985E-4j',
'-0.017014515914781394-0.2820013864855318j'],
dtype='|S41')
In [23]: bane.astype(dtype=complex)
Out[23]:
array([ 1.00002734 -7.33108522e-06j, 1.00230870 -1.82283684e-04j,
-0.01701452 -2.82001386e-01j])
Ale kiedy jest dtype przedmiot i staram się je konwertować, pojawia się błąd, że wymagany jest pływak. Dlaczego to?
In [24]: bane.astype(dtype=object)
Out[24]:
array(['1.000027337501943-7.331085223659654E-6j',
'1.0023086995640738-1.8228368353755985E-4j',
'-0.017014515914781394-0.2820013864855318j'], dtype=object)
In [25]: _.astype(dtype=complex)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-25-f5d89c8cc46c> in <module>()
----> 1 _.astype(dtype=complex)
TypeError: a float is required
przekonwertować go, używam dwa wywołania metody astype który wydaje niezdarny:
bane_obj
Out[27]:
array(['1.000027337501943-7.331085223659654E-6j',
'1.0023086995640738-1.8228368353755985E-4j',
'-0.017014515914781394-0.2820013864855318j'], dtype=object)
In [28]: bane_obj.astype(dtype=str).astype(dtype=complex)
Out[28]:
array([ 1.00002734 -7.33108522e-06j, 1.00230870 -1.82283684e-04j,
-0.01701452 -2.82001386e-01j])
Może to być błąd NumPy. –
Trudno powiedzieć, gdzie w kodzie 'numpy' zachodzi konwersja. Ciąg do złożonej konwersji prawdopodobnie działał przez długi czas, podczas gdy rozwój dtypów obiektów jest nowszy i trwa. Co to jest generowanie tego rodzaju tablicy obiektów? – hpaulj
Tablica 'dtype = np.object' może zawierać dosłownie * dowolny * rodzaj obiektu Pythona, więc myślę, że zrozumiałe jest, że numpy developerzy nie zawracali sobie głowy zaimplementowaniem tutaj każdej możliwej reguły konwersji typu. Łączenie razem '.astype (np.str) .astype (np.complex)' wydaje się być całkiem rozsądnym obejściem tego, co musi być bardzo rzadkim przypadkiem użycia. Prawdziwe pytanie w moim umyśle brzmi: dlaczego masz do czynienia z tablicą 'np.object' zawierającą numery zespolone w formacie string! –