当尝试使用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
答案 0 :(得分:1)
您在这里犯了一个小错误。您假设<script>documen.Write("Hello World.");</script>
和dtype.name
返回相同的内容。他们没有。
dtype.names
此数据类型的位宽名称。
name
字段名称的有序列表,如果没有字段,则为None。
因此,您所看到的是字段数据类型的位宽名称。但是,如果您致电names
,则会返回dtype.names
,因为您传递的单个字段没有任何字段可以返回。
据我所知,没有一种方法可以在不访问包含字段的结构化数组的情况下推断其名称。您很可能必须将字段名称作为参数传递给None
函数。