2

当尝试使用 numpy.array(结构化的 numpy 数组)时,我知道我可以通过执行类似数组 [“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

4

1 回答 1

2

你在这里犯了一个小错误。你假设dtype.namedtype.names返回相同的东西。他们不。

从文档

name 此数据类型的位宽名称。

names字段名称的有序列表,如果没有字段,则为 None。


因此,您看到的是字段数据类型的位宽名称。但是,如果您调用dtype.names,您将被返回None,因为您传递的单个字段没有任何要返回的字段。


据我所知,如果不访问包含它的结构化数组,就无法推断字段的名称。您很可能必须将字段名称作为参数传递给您的empty_check函数。

于 2018-12-06T19:54:06.393 回答