0

sig_txt: [45 67 83 32767 101 90 50]

idx_rr:[101] // index after 32767

sig: [45 67 83 101 90 50] // all the elements except 32767

基本上发生的事情来自原始数组,除了值等于32767的元素之外的所有元素都传递给sig数组。并在32767idx_rr之后立即获取值。我已经为此编写了一个python。但我收到此错误:

“'int' 对象不支持项目分配”

当我试图绘制idx_rr. sig我能得到一些帮助吗?

R_peak = False   
j = 0
k = 0
idx_rr = []
sig = []

for i in range (len(sig_txt)):
    if (sig_txt[i] == 32767):
        idx_rr = i+1
        idx_rr[j] = np.array(sig_txt[i+1])
        sig = i+1
        sig[k] = np.array(sig_txt[i+1])
        k = k + 1
        j = j + 1
        print(idx_rr)
        R_peak = True
    else:
        if (R_peak == False):
            sig = i
            sig[k] = np.array(sig_txt[i])
            k = k + 1

        else:
            R_peak = False

plt.figure(figsize=(20,8))
plt.plot(sig)
plt.scatter([idx_rr], [sig[idx_rr]], c='g')  
plt.show() 

TypeError Traceback (most recent   call last)
<ipython-input-1474-dcea2717b9f2> in <module>
----> 1 get_intervals('/home/yasaswini/hp2-notebooks/ecg_data   
/Recorded_Data_Patch_Simulator/TXT_Files   
/ECG_data_128Hz_Simulator_Patch_Normal_data.txt',128)

<ipython-input-1471-5a6b384defd1> in get_intervals(fname,sampling_rate)
22             if (R_peak == False):
23                 sig = i
---> 24                 sig[k] = np.array(sig_txt[i])
25                 k = k + 1
26 

TypeError: 'int' object does not support item assignment
4

2 回答 2

1

idx_rr = i+1以前定义list的变成了,int所以没有索引idx_rr[j]可以赋值。这同样适用于sig变量。

请注意,问题不在于声明,python 允许您将变量重新分配给新类型。问题是它idx_rr是类型,int您无法访问和索引idx_rr[j].int

尝试这个

R_peak = False   
j = 0
k = 0
idx_rr = []
idx_rr_int = 0
sig = []
sig_int = 0
for i in range (len(sig_txt)):
    if (sig_txt[i] == 32767):
        idx_rr_int = i+1
        idx_rr[j] = np.array(sig_txt[i+1])
        sig_int = i+1
        sig[k] = np.array(sig_txt[i+1])
        k = k + 1
        j = j + 1
        print(idx_rr_int)
        R_peak = True
    else:
        if (R_peak == False):
            sig_int = i
            sig[k] = np.array(sig_txt[i])
            k = k + 1

        else:
            R_peak = False

plt.figure(figsize=(20,8))
plt.plot(sig)
plt.scatter([idx_rr], [sig[idx_rr]], c='g')  
plt.show() 
于 2019-11-22T07:43:59.820 回答
0

在该行之后idx__rr = i+1,您将 idx_rr 的数据类型(之前是 list)更改为int

更改列表的变量名称以消除错误。

于 2019-11-22T07:49:25.807 回答