我的数据集有Nx6,其中N是样本数。
当我运行这行代码时:
segments, labels = segment_signal(dataset)
它给出错误:
TypeError:无法对< class'pandas.core.indexes.range.RangeIndex'>进行切片索引。使用< class'flora'>
的这些索引器[45.0]
功能段信号的定义如下:
def segment_signal(data,window_size = 90):
segments = np.empty((0,window_size,3))
labels = np.empty((0))
for (start, end) in windows(data['timestamp'], window_size):
x = data["x-axis"][start:end]
y = data["y-axis"][start:end]
z = data["z-axis"][start:end]
if(len(dataset['timestamp'][start:end]) == window_size):
segments = np.vstack([segments,np.dstack([x,y,z])])
labels = np.append(labels,stats.mode(data["activity"][start:end])[0][0])
return segments, labels
辅助函数:
def windows(data, size):
start = 0
while start < data.count():
yield start, start + size
start += (size / 2)
我对其进行了问题排查,看起来此行导致错误:
x = dataset [“x-axis”] [start:end]
我进一步分析了它,似乎windows()
是一个生成器函数。因此,(start, end)
中的segment_signal
是生成器对象。但由于某些我无法理解的原因,x = dataset["x-axis"][start:end]
发生了错误。
问题在于我可以打印start
和end
的值,但我无法使用它们的值。比如说,将它们用作x
的索引。
转动start
和end
是浮动的iut。
我刚做int(start)
和int(end)
。但当我做x = dataset["x-axis"][start:end]
并得到形状x.shape
时,答案是(24,),当它应该是90(因为窗口大小是90.但是当我计算end - start
答案仍然是90.当我打印x
时,它只有26个元素应该是90.这是为什么?
答案 0 :(得分:0)
我认为JAV对变量的类型是正确的。试试这个简单的(不确定它是否是最好的)解决方案
for (start, end) in windows(data['timestamp'], window_size):
start = int(start)
end = int(end)
print("check start and end",start,end)
我希望这会有所帮助