当作为参数传递给函数时,获取numpy结构化数组列的名称

时间:2018-12-06 19:35:10

标签: python arrays numpy structured-array

当尝试使用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 :(得分:1)

您在这里犯了一个小错误。您假设<script>documen.Write("Hello World.");</script> dtype.name返回相同的内容。他们没有。

From the docs

  

dtype.names   此数据类型的位宽名称。

     

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


因此,您所看到的是字段数据类型的位宽名称。但是,如果您致电names,则会返回dtype.names,因为您传递的单个字段没有任何字段可以返回。


据我所知,没有一种方法可以在不访问包含字段的结构化数组的情况下推断其名称。您很可能必须将字段名称作为参数传递给None函数。