我正在使用UnivariateSpline为我拥有的某些数据构建分段多项式.然后我想在其他程序中使用这些样条(在C或FORTRAN中),因此我想了解生成样条函数背后的等式.
这是我的代码:
import numpy as np
import scipy as sp
from scipy.interpolate import UnivariateSpline
import matplotlib.pyplot as plt
import bisect
data = np.loadtxt('test_C12H26.dat')
Tmid = 800.0
print "Tmid", Tmid
nmid = bisect.bisect(data[:,0],Tmid)
fig = plt.figure()
plt.plot(data[:,0], data[:,7],ls='',marker='o',markevery=20)
npts = len(data[:,0])
#print "npts", npts
w = np.ones(npts)
w[0] = 100
w[nmid] = 100
w[npts-1] = 100
spline1 = UnivariateSpline(data[:nmid,0],data[:nmid,7],s=1,w=w[:nmid])
coeffs = spline1.get_coeffs()
print coeffs
print spline1.get_knots()
print spline1.get_residual()
print coeffs[0] + coeffs[1] * (data[0,0] - data[0,0]) \
+ coeffs[2] * (data[0,0] …Run Code Online (Sandbox Code Playgroud) 我不确定我理解为什么:
for f in `find . -name "strain_flame_00*.dat"`; do
echo $f
mybase=`basename $f .dat`
echo $mybase
done
Run Code Online (Sandbox Code Playgroud)
工作和:
for f in `ls strain_flame_00*.dat`; do
echo $f
mybase=`basename $f .dat`
echo $mybase
done
Run Code Online (Sandbox Code Playgroud)
没有,即文件名不会被删除后缀.我认为这是因为出来的ls格式不同,但我不确定.我甚至试图把它放在evalls面前......
所以我有一个相当大的(200k +行)结构化数组:
recordtype = np.dtype([('x',np.float32),('y',np.float32),('z',np.float32), \
('u',np.float32),('v',np.float32),('w',np.float32), \
('d',np.float32),('T',np.float32),('mdot',np.float32), \
('f',np.float32),('t',np.float32),('name',np.str_,14)])
data = np.loadtxt('tmp2.out',dtype=recordtype,skiprows=2)
Run Code Online (Sandbox Code Playgroud)
在"名称"列中,有非唯一元素:len(data[:]['name'])大于len(set(data[:]['name'])).我想创建一个只包含唯一元素的新数组 name,我猜第一次出现就好了.我该如何有效地做到这一点?