首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >genfromtxt和numpy

genfromtxt和numpy
EN

Stack Overflow用户
提问于 2013-01-30 20:44:28
回答 2查看 1.7K关注 0票数 0

我在诸如"file.csv“之类的文件中有数据。我想用np.genfromtxt阅读它们,并在一些列(X, Y, Z)上做一些统计,如平均值、方差等。然而,我想为X > 1, Y > 3 Z > 2等做统计。这是一个简单的例子。

这段代码产生了几乎正确的结果,但它包括了所有的X,Y和Z,我想做同样的事情,但是使用我上面指定的X,Y,Z条件。

代码语言:javascript
复制
#file.csv
X,Y,Z
1,2,3
4,2,5
15,9,1
#

data = np.genfromtxt(file.csv, delimiter=',', dtype=float, unpack=True, skiprows = 0) 
X=data[0];Y=data[1];Z=data[2]
Mean = np.average(X)

-->做了一个很好的工作来获得平均值。然而,我希望只有当X>1(例如)时,我才能得到平均值……我如何让它这样做呢?

EN

回答 2

Stack Overflow用户

发布于 2013-01-30 20:51:25

为了仅计算某些字段的平均值,您可以按如下方式分解平均值:

  1. 查找满足特定条件的元素的索引(ind)
  2. 查找仅使用ind

中的值进行索引的数组的平均值

下面的代码就是这样做的:

代码语言:javascript
复制
indexes = np.where(X>1)[0] # We index with '0' here to get to the 1st element of the returned tuple
Mean = np.mean(X[indexes])
票数 1
EN

Stack Overflow用户

发布于 2013-01-30 20:52:58

你可以使用所谓的“花式索引”,X[X>1],来选择你想要的数组部分:

代码语言:javascript
复制
import numpy as np
X,Y,Z = np.genfromtxt('file.csv', delimiter=',', dtype=float, unpack=True, skiprows = 0)
print(X)
# [ nan   1.   4.  15.]
print(X[X>1])
# [  4.  15.]
print(np.average(X[X>1]))
# 9.5

要将两个掩码(布尔数组)与按位逻辑与组合,请使用&运算符:

代码语言:javascript
复制
print(np.average(X[(X>1)&(X<10)]))
# 4.0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14604344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档