![](/img/trans.png)
[英]How would I use Dask to perform parallel operations on slices of NumPy arrays?
[英]How to perform operations with row arrays using numpy?
我有一个吸光度值矩阵,它是从整个光谱中得出的。 我称这个矩阵为“ specdt”
每行代表特定波长下多个样本的值。 我想针对称为“浓度”的单独的浓度值数组找到回归的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”变量进行迭代。 没运气。
我怀疑这是我试图将行拖入linregress的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
浓度数组和行的尺寸应相同。
如果我拔出一列(换位,则为佳),linregress可以很好地工作。这是有效的代码,如果有帮助的话:
##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
for y in specdt: # <---
x = Concentration
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
for
循环已经给出了行本身的内容。 如果要行索引,请使用
for row, y in enumerate(specdt):
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.