我已经从UV / Vis获得了数据
我的目标是在330nm之后找到一个波长并找到最大吸收率。因此,在这种情况下,最高值将在420nm处约为0.4
CSV文件如下所示
Wavelength (nm) Absorbance (AU) Std.Dev.
190 2.458802223 0.012281572
191 2.523416042 0.011004285
192 2.609054089 0.014727822
193 2.6453619 0.00920296
.
.
等等
这是我的代码
import os
import sys
import matplotlib.pyplot as plt
import csv
import numpy as np
Rhod = open('Rhodamine.CSV', 'r+')
text = Rhod.read()
Rhod.close()
x = text.split('\n')
f = np.loadtxt(x, delimiter=',', skiprows=1, unpack=True)
x = f[0]
y = f[1]
我已经使用np.loadtext更改了数组。但是我被困在这里
我用过
for x in range(330,900):
print(int(max(y)))
但是,此打印会打印y的整个数组,(900-330)次。
谢谢你们!
为了读入您显示的数据,需要使用delimiter = ' '
代替,
。但这可能是复制的问题。
现在有两个数组,您想x
在另一个(y
)最大的位置上找到一个()的值,您可以
x[np.argmax(y)]
wherrenp.argmax
查找最大值的索引。
直接使用x
,y
当然会在190左右产生不需要的结果。因此,您首先需要对数组进行切片。在您的情况下,似乎x值之间的步长等于和1
。这使得它非常容易:
xc = x[330-int(x.min()):]
yc = y[330-int(x.min()):]
print xc[np.argmax(yc)]
对于更一般的情况,您可以使用布尔切片,
xc = x[x >= 330]
yc = y[x >= 330]
print xc[np.argmax(yc)]
只是为了确保背景没有其他错误:调用了您读入的文件时Rhodamine
,您显示的图形不能是若丹明,因为它在黄色/绿色(〜550 nm)中有吸收,而在420 nm处没有吸收。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句