我使用以下代码创建一个numpy ndarray。该文件有9列。我显式键入每个列:
dataset = np.genfromtxt("data.csv", delimiter=",",dtype=('|S1', float, float,float,float,float,float,float,int))
现在我想得到每一列的描述性统计数据(最小值、最大值、标准偏差、平均值、中位数等)。难道不应该有一个简单的方法来做这件事吗?
我试过这个:
from scipy import stats
stats.describe(dataset)
但这会返回一个错误:TypeError: cannot perform reduce with flexible type
我的问题是:如何获取创建的numpy ndarray的描述性统计数据。
这不是一个很好的解决方案,但它能完成任务。问题是,通过指定多个数据类型,您实际上是在生成元组的1D数组(实际上是
np.void
),因为它包含多个不同的类型(包括字符串),所以stats无法对其进行描述。这可以通过两轮阅读或者使用pandas和^{} 来解决。
如果你决定坚持
numpy
:注意,在这个例子中,最终数组有
dtype
作为float
,而不是int
,但是可以很容易(如果需要)使用arr.astype(int)
转换为int如何处理来自
genfromtxt
的混合数据的问题经常出现。人们期望一个二维数组,却得到一个不能按列索引的一维数组。这是因为他们得到了一个结构化数组——每列有不同的数据类型。文档中的所有示例都显示如下:
但是让我演示一下如何访问这种数据
所以我的数组有两条记录(检查形状),它们在列表中显示为元组。
访问
fields
是按名称,而不是按列号(是否需要添加结构化数组文档链接?)在这种情况下,如果我选择带“子阵”的
dtype
可能更有用。这是一个更高级的数据类型主题character列仍作为
S1
加载,但数字现在位于3列数组中。注意,它们都是float(或int)。相关问题 更多 >
编程相关推荐