sig_txt:[45 67 83 32767 101 90 50]
idx_rr:[101]//32767 之后的索引
sig: [45 67 83 101 90 50]//除 32767 之外的所有元素
基本上发生的情况是从原始数组开始,除了值等于 32767 的元素之外的所有元素都传递到 sig
数组。 idx_rr
获取紧随 32767 之后的值。我已经为此编写了一个Python。但我收到此错误:
"'int' object does not support item assignment"
当我尝试绘制 sig
的 idx_rr
值时。我可以得到一些帮助吗?
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
最佳答案
使用idx_rr = i+1
,之前定义的list
变成int
,因此没有索引idx_rr[j]
为其赋值。这同样适用于 sig
变量。
请注意,问题不在于声明,Python 允许您将变量重新分配给新类型。问题在于 idx_rr
的类型为 int
,并且您无法访问和索引 int
的 idx_rr[j]
.
试试这个
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()
关于python - 类型错误 : 'int' object does not support item assignment error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58989570/