Kiedy próbuję użyć numpy.array (strukturalnej tablicy numpy), wiem, że mogę wyciągnąć kolumnę, wykonując coś w rodzaju array ["col"]. Z mojego zrozumienia wynika to z numpy.dtype.names i natury uporządkowanych tablic. Jednak podczas przekazywania wspomnianej tablicy do funkcji nie otrzymuję nazwy kolumny, gdy używam numpy.dtype.name, otrzymuję coś w rodzaju „strxxx”. Jeśli warto wiedzieć, ta konkretna tablica została utworzona za pomocą numpy.genfromtxt () i pliku csv. Na przykład poniższy kod
def empty_check(param):
for ind in param:
# Ignore future warning for comparison just for this instance
with warnings.catch_warnings():
warnings.simplefilter(action='ignore', category=FutureWarning)
if ind == '':
print("Please fill out required data in", param.dtype.name, "column")
Prowadzi do:
Please fill out required data in str544 column
Czy ktoś miałby pomysł, dlaczego zamiast nazwy kolumny pojawia się str544?
Konfiguracja Python 3.7.0 numpy 1.15.4 IDE: PyCharm 2018.3
1 odpowiedź
Popełniasz tutaj mały błąd. Zakładasz, że dtype.name
i dtype.names
zwracają to samo. Oni nie.
name
Nazwa szerokości bitowej dla tego typu danych.
names
Uporządkowana lista nazw pól lub Brak, jeśli nie ma pól.
Widzisz więc nazwę szerokości bitowej typu danych pola. Jeśli jednak zadzwonisz dtype.names
, otrzymasz zwrot None
, ponieważ przekazane pojedyncze pole nie ma żadnych pól do zwrócenia.
O ile mi wiadomo, nie ma sposobu na wywnioskowanie nazwy pola bez dostępu do tablicy strukturalnej, która je zawiera. Najprawdopodobniej będziesz musiał przekazać nazwę pola jako parametr do funkcji empty_check
.
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.