Python 扩展单个变量的频率数据集
我有两列数据:一列是温度值,另一列是观察每个温度的频率。我一直在尝试用python编写代码,获取这两列频率数据并创建一个扩展的温度数据数组。我基本上想要反转“计算”值的过程,并在单个数组中公开所有原始数据值 我目前读取数据的方式如下:Python 扩展单个变量的频率数据集,python,arrays,count,histogram,frequency,Python,Arrays,Count,Histogram,Frequency,我有两列数据:一列是温度值,另一列是观察每个温度的频率。我一直在尝试用python编写代码,获取这两列频率数据并创建一个扩展的温度数据数组。我基本上想要反转“计算”值的过程,并在单个数组中公开所有原始数据值 我目前读取数据的方式如下: f = np.genfromtxt('playground_sum.txt', usecols=(0,1)) freq = f[:,1] temp = f[:,0] freq = freq.astype(int) new = [] for line in f:
f = np.genfromtxt('playground_sum.txt', usecols=(0,1))
freq = f[:,1]
temp = f[:,0]
freq = freq.astype(int)
new = []
for line in f:
new = np.repeat(temp,freq)
print new
这成功了!欢迎使用任何其他方法。尝试以下方法:
array = []
with open('myfile.txt') as f:
for line in f:
line = line.strip()[1: -1] # gives ex: '10, 0'
try:
temp, freq = [int(i) for i in line.split(',')] # a list comprehension
except ValueError:
continue
array.extend([temp] * freq)
这假设文件中的每一行都是这样的:[10,0]
此代码输出的列表如下:
[10,20,20,30,30,30]
类似于@Totem solution,但我认为您应该将频率转换为整数
array = []
with open('test.csv') as f:
for line in f:
temp, freq = line.split(',')
try:
freq = int(freq)
except Exception as e:
continue
array.extend([temp] * freq)
print array
你能展示一下你试过什么吗?另外,如果我理解您想要实现的目标(显示温度取决于FREQ的值),那么如果FREQ为0,您为什么要显示
[10]
?@gk3rch您似乎已经完全更改了文本文件的格式,array()从何而来?对于这些更改,我深表歉意,我正在尝试演示一个示例。我在ipython笔记本上编码。这个概念对我来说很重要,而不是数字、输入/输出、格式。您是否有.txt
格式的数据,或者您已经有嵌套列表?我有.txt格式的数据。您是否应该将freq
转换为int?您的数据是什么样的?这应该是部分temp,freq=line.split(',')
,原因是它试图分割行,但只返回一个值,所以另一个值是unpack
,我认为问题是因为我使用的是numpy数组?你应该更新你的问题并将当前代码附加到那里