【发布时间】:2026-02-12 16:15:01
【问题描述】:
我试图在我的数据集中挑选出特定出现的值,但在处理将值转换为字符串并循环它们时一直遇到问题。我的代码如下:
data = np.genfromtxt('DurhamAirMass.txt')
spot = data[:,1]
mass = str(data[:,2])
DP = np.array([])
DT = np.array([])
MP = np.array([])
MT = np.array([])
TR = np.array([])
for i in range(1461):
if mass[i] == '2':
DP = np.append(DP, str(spot[i]))
if mass[i] == '3':
DT = np.append(DT, str(spot[i]))
if mass[i] == '5':
MP = np.append(MP, str(spot[i]))
if mass[i] == '6' or '66' or '67':
MT = np.append(MT, str(spot[i]))
if mass[i] == '7':
TR = np.append(TR, str(spot[i]))
print DP
当我尝试打印出 DP 数组时,我收到一个错误,指向第一个 if 语句并说“IndexError:字符串索引超出范围”。有什么想法吗?
【问题讨论】:
-
你知道
mass的长度至少是1461吗?我认为你的 for 循环应该是for i in range(len(mass)) -
@aruisdante 我认为这是我遇到问题的地方。字符串的长度不是 1461,这就是我必须循环的数据点数(即我有 1461 个质量和 1461 个点)
-
做一个
print mass看看,它是什么样子的。 -
@Daniel 它给了我 1461 个不同的数字(即前六个是 [1. 4. 7. 2. 2. 2. ..........]
-
@DJV:不,它为您提供了数组的字符串表示形式,长度约为 80 个字符