【发布时间】:2010-12-30 19:48:36
【问题描述】:
我正在使用 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
我担心的是,如果我使用一些奇怪的异常处理,我无法区分空的和长度 = 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)是一个零秩或零维度的数组。