我的输入是在跟踪器软件的屏幕上移动的点的2d(x,y)时间序列.我想用卡尔曼滤波器消除一些噪音.有人能指出我为卡尔曼2d滤镜的python代码吗?在scipy cookbook中,我发现只有一个例子:http: //www.scipy.org/Cookbook/KalmanFiltering 我看到OpenCV中有卡尔曼滤波器的实现,但找不到代码示例.谢谢!
我正在尝试使用numpy.savetxt将numpy矩阵(Nx3,float64)保存到txt文件中:
np.savetxt(f, mat, fmt='%.5f', delimiter=' ')
Run Code Online (Sandbox Code Playgroud)
这行在python 2.7中工作,但在python 3.5中,我收到以下错误:
TypeError:数组dtype('float64')和格式说明符('%.5f%.5f%.5f')之间不匹配
当我踩到savetxt代码时,在catch块(numpy.lib.npyio,第1158行)中打印错误(traceback.format_exc()),错误完全不同:
TypeError:write()参数必须是str,而不是bytes
导致异常的代码行如下:
fh.write(asbytes(format % tuple(row) + newline))
Run Code Online (Sandbox Code Playgroud)
我试图删除asbytes,它似乎修复了这个错误.这是一个numpy的错误吗?
偏最小二乘(PLS)算法在scikit-learn库中实现,如下所述:http: //scikit-learn.org/0.12/auto_examples/plot_pls.html 在y是二进制向量的情况下,变体正在使用该算法,偏最小二乘判别分析(PLS-DA)算法.sklearn.pls中的PLSRegression模块是否也实现了这种二进制情况?如果没有,我在哪里可以找到它的python实现?在我的二进制文件中,我正在尝试使用PLSRegression:
pls = PLSRegression(n_components=10)
pls.fit(x, y)
x_r, y_r = pls.transform(x, y, copy=True)
Run Code Online (Sandbox Code Playgroud)
在transform函数中,代码在此行中获得异常:
y_scores = np.dot(Yc, self.y_rotations_)
Run Code Online (Sandbox Code Playgroud)
错误消息是"ValueError:矩阵未对齐".Yc是规范化的y向量,self.y_rotations_ = [1.].在拟合函数中,如果原始y是单变量向量(y.shape 1 = 1),则self.y_rotations_ = np.ones(1).
我尝试按照以下示例操作,如何将字幕添加到影片剪辑:
from moviepy.video.tools.subtitles import SubtitlesClip
from moviepy.video.io.VideoFileClip import VideoFileClip
subs = [((0, 3), 'sub1'),
((3, 7), 'sub2'),
((9, 11), 'sub3'),
((11, 16), 'sub4')]
subtitles = SubtitlesClip(subs)
clip = VideoFileClip(video_fname)
video = movedit.CompositeVideoClip([clip, subtitles])
video.to_videofile(output_video_name)
Run Code Online (Sandbox Code Playgroud)
但是输出的电影原来没有字幕。难道我做错了什么?顺便说一句,subtitles.py不适用于python 3,这行代码
subtitles = [(map(cvsecs, tt),txt) for tt, txt in subtitles]
Run Code Online (Sandbox Code Playgroud)
需要更改为
subtitles = [(list(map(cvsecs, tt),txt)) for tt, txt in subtitles]
Run Code Online (Sandbox Code Playgroud)
最终,我用困难的方式创建了字幕:
from moviepy import editor
import os.path as op
def annotate(clip, txt, txt_color='red', fontsize=50, font='Xolonium-Bold'):
""" Writes a text at …
Run Code Online (Sandbox Code Playgroud) 如何将 3d 点放入 3d 箱中?np.digitize 是否有多维版本?我可以为每个维度分别使用 np.digitize ,就像这里。有更好的解决方案吗?谢谢!
我试图传递一个参数,它是值列表:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--cb_ticks', required=False, default='')
args = vars(parser.parse_args())
print(args['cb_ticks'])
Run Code Online (Sandbox Code Playgroud)
对于大多数情况,此代码按预期工作:
但是当我尝试传递多个值时,第一个值是负值:
我收到以下错误:test.py:
错误:参数 --cb_ticks:需要一个参数
我在机器学习scikit-learn包中使用SVM分类器进行python.我的功能是整数.当我调用fit函数时,我得到用户警告"Scaler假定浮点值为输入,得到int32",SVM返回其预测,我计算混淆矩阵(我有2个类)和预测精度.我试图避免用户警告,所以我将这些功能保存为浮动.事实上,警告消失了,但我得到了一个完全不同的混淆矩阵和预测准确度(令人惊讶的是更不准确)有人知道它为什么会发生吗?什么是可取的,我应该将功能发送为浮点数还是整数?谢谢!
给定两个3d点和另一个3d点列表,我想检查哪一个在圆柱体内定义为两个点之间的半径为r的三维线.我已经实现了一个数值解决方案,这是不准确和太慢:
def point_in_cylinder(pt1, pt2, points, r, N=100):
dist = np.linalg.norm(pt1 - pt2)
ori = (pt2 - pt1) / dist
line = np.array([pt1 + ori*t for t in np.linspace(0, dist, N)])
dists = np.min(cdist(line, points), 0)
return np.where(dists <= r)[0]
Run Code Online (Sandbox Code Playgroud)
我相信有更好的解决方案......
*****编辑*****
我通过用矩阵乘法替换listcomp(声明行的位置)来加速这个函数:
line = (pt1.reshape(3, 1) + elc_ori.reshape(3, 1) @ np.linspace(0, dist, N).reshape(1, N)).T
Run Code Online (Sandbox Code Playgroud) python ×6
numpy ×2
scikit-learn ×2
2d ×1
3d ×1
argparse ×1
arguments ×1
binning ×1
formatting ×1
moviepy ×1
python-3.5 ×1
subtitle ×1
svm ×1