Получение имени столбца с пустым структурированным массивом при передаче в качестве параметра в функцию - PullRequest
0 голосов
/ 06 декабря 2018

Когда я пытаюсь использовать numpy.array (структурированный массив numpy), я знаю, что могу открыть столбец, выполнив что-то вроде array ["col"].Насколько я понимаю, это из-за numpy.dtype.names и природы структурированных массивов.Однако при передаче указанного массива в функцию, я не получаю имя столбца при использовании numpy.dtype.name, я получаю что-то вроде "strxxx".Если это помогает узнать, этот конкретный массив был создан с использованием numpy.genfromtxt () и файла CSV.Например, приведенный ниже код

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")

приводит к:

Please fill out required data in str544 column

Кто-нибудь может понять, почему вместо имени столбца появляется str544?

Настройка Python 3.7.0 numpy 1.15.4 IDE: PyCharm 2018.3

1 Ответ

0 голосов
/ 06 декабря 2018

Вы делаете небольшую ошибку здесь.Вы предполагаете, что dtype.name и dtype.names возвращают одно и то же.Они не.

Из документов

name Имя ширины в битах для этого типа данных.

names Упорядоченный список имен полей или None, если полей нет.


Итак, вы видите имя ширины в битах для типа данных вашего поля.Однако, если вы позвоните dtype.names, вам будет возвращено None, так как переданное вами одиночное поле не имеет полей для возврата.


НасколькоЯ знаю, что нет способа вывести имя поля без доступа к структурированному массиву, который его содержит.Скорее всего, вам придется передать имя поля в качестве параметра вашей функции empty_check.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...