我正在使用numpy.genfromtxt读取文件,其中包含字符串和数值列。 我需要做的一件事是检测输入的长度。如果每个数组中只读入一个值,则会出现问题。
但是...如果结果数组中只有一个元素,则逻辑会失效。 我可以在此处重新创建一个示例:
import numpy as np
a = np.array(2.3)
len(a)返回一个错误,该错误信息如下:
TypeError: len() of unsized object
然而,如果a有2个或更多元素,len()将按照我们预期的方式运行。
import numpy as np
a = np.array([2.3,3.6])
len(a)返回2。
我的担忧在于,如果我使用某些奇怪的异常处理方式,我无法区分a是空的还是长度等于1。
编辑:@noskio建议将a设置为np.array([2.3])。问题在于,a的实际起源是使用numpy.genfromtxt。代码如下:
import numpy as np
indata = np.genfromtxt(some_filename, names=True,dtype=None)
a = indata['one_col_headername']
因此,如果indata在文件中只有一行,则a是一个0维数组。
array([2])
是一个具有一个元素和一维的数组。array(2)
是一个零秩或零维度的数组。 - endolith