我有一個吸收值的矩陣,我從整個譜圖中提取出來。我稱之爲矩陣「specdt」如何使用numpy對行數組執行操作?
每行代表特定波長下多個樣本的值。我想找到稱爲「濃度」的單獨濃度值的迴歸r^2值。
這是我到目前爲止有:
regression = []
for row in specdt:
x = Concentration
y = specdt[row,:]
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
regression.append(r_value**2)
regression_n = numpy.asarray(regression)
numpy.savetxt("r2_2.csv", regression_n, delimiter=",")
我得到的錯誤:
Traceback (most recent call last):
file "blah blah", line 42, in <module>
y = specdt[row,:]
InexError: arrays used as indices must be of integer (or boolean) type
我懷疑這是因爲「行」不是一個整數,所以我試圖遍歷一個「t」變量;沒有運氣。
我懷疑這是我試圖拉行到lin值的y值的方式,但我似乎無法找到另一種方式來做到這一點。
任何意見非常感謝!
編輯:我應該指出,
y = row
是我想的第一件事。
它給了我下面的錯誤:
Traceback (most recent call last):
File "C:\Users\ME\Downloads\Personal\Spectrometer\test\Spectrum3.py", line 42, in <module>
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
File "C:\Python27\lib\site-packages\scipy\stats\_stats_mstats_common.py", line 92, in linregress
ssxm, ssxym, ssyxm, ssym = np.cov(x, y, bias=1).flat
File "C:\Python27\lib\site-packages\numpy\lib\function_base.py", line 2432, in cov
X = np.vstack((X, y))
File "C:\Python27\lib\site-packages\numpy\core\shape_base.py", line 230, in vstack
return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
ValueError: all the input array dimensions except for the concatenation axis must match exactly
的conncentration陣列的尺寸和行應該是相同的。
linregress精美的作品,如果我拉出一列(我換位specdt)。這是工作的代碼,如果這能幫助:
##take only column 26 or the values for 2268; print stuff
#Absorbance2268 = spectral_data[:, 25]
#print(Absorbance2268.shape)
#print(Absorbance2268)
#
##manual entry of concentration values + array info
#conc =[0,0,0,0,0,6,6,6,6,6,6,6,6,6,6,8,8,8,8,8,10,10,10,10,10,4,4,4,4,4]
#Concentration = numpy.asarray(conc)
#
#print(Concentration.shape)
#print(Concentration)
#
##performing linear regression.
#x = Concentration
#y = Absorbance2268
#
#slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
#
#print "r-squared:", r_value**2
'譜(s?)'譜是譜的複數 – dawg
哈哈謝謝。 Part 1 of 2:P – FLAV10
假設'specdt'是一個numpy數組或矩陣,那麼'row'已經是你想要的行(不是行的索引),所以'y = specdt [row,:]'應該簡單地'Y = row'。 –