gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:37:15 25 4
gpt4 key购买 nike

当尝试使用 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.0numpy 1.15.4IDE:PyCharm 2018.3

最佳答案

你在这里犯了一个小错误。您假设 dtype.name 和 dtype.names 返回相同的内容。但他们没有。

From the docs

nameA bit-width name for this data-type.

names Ordered list of field names, or None if there are no fields.

<小时/>

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

<小时/>

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

关于python - 当作为参数传递给函数时获取 numpy 结构化数组列的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53658442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com