小编Pau*_*aul的帖子

从python生成电影而不将单个帧保存到文件

我想从我在matplotlib的python脚本中生成的帧创建一个h264或divx电影.这部电影大约有10万帧.

在网络上的例子中[例如 1],我只看到了将每个帧保存为png然后在这些文件上运行mencoder或ffmpeg的方法.就我而言,保存每一帧是不切实际的.有没有办法从matplotlib生成一个图并将其直接传递给ffmpeg,不生成中间文件?

用ffmpeg的C-api编程对我来说太难了[例如.2].此外,我需要一个具有良好压缩的编码,例如x264,因为电影文件对于后续步骤来说太大了.所以坚持使用mencoder/ffmpeg/x264会很棒.

有什么东西可以通过管道来完成[3]?

[1] http://matplotlib.sourceforge.net/examples/animation/movie_demo.html

[2] 如何使用x264 C API将一系列图像编码为H264?

[3] http://www.ffmpeg.org/ffmpeg-doc.html#SEC41

python ffmpeg numpy matplotlib x264

69
推荐指数
5
解决办法
5万
查看次数

仅沿一个轴卷积

我有两个具有相同第一轴尺寸的二维阵列.在python中,我想仅沿第二轴卷积两个矩阵.我想C在不计算沿第一轴的卷积的情况下进入下方.

import numpy as np
import scipy.signal as sg

M, N, P = 4, 10, 20
A = np.random.randn(M, N)
B = np.random.randn(M, P)

C = sg.convolve(A, B, 'full')[(2*M-1)/2]
Run Code Online (Sandbox Code Playgroud)

有快速的方法吗?

signal-processing numpy linear-algebra convolution scipy

14
推荐指数
3
解决办法
1万
查看次数

NX从Mac OS X Lion到Ubuntu的键盘映射问题

我的NX会话的键映射出现乱码问题.

我有一台运行OS X Lion的Macbook Air.我使用OpenNX与运行FreeNX的Ubuntu服务器启动会话.会话类型是Gnome.

我的键映射非常关闭(例如,w给出=,删除给出",",t给出w).我试过了:

xmodmap -pke > nxclient.xmodmap
Run Code Online (Sandbox Code Playgroud)

在客户端上,

xmodmap nxclient.xmodmap
Run Code Online (Sandbox Code Playgroud)

在服务器上,我恢复了许多密钥,但它仍然无法使用.我尝试了Gnome键盘布局但没有工作.XFCE会话也会出现此问题.

我会很感激任何提示.x2go使用Gnome在客户端和服务器上工作,没有任何问题.不幸的是,它目前在Mac OS X Lion上不起作用.

macos remote-desktop keymapping nomachine-nx

12
推荐指数
1
解决办法
7367
查看次数

获取matplotlib绘图以在鼠标焦点上刷新

我正在使用具有交互模式的matplotlib并且正在执行计算,比如说有很多步骤的优化,我在每个步骤绘制中间结果以进行调试.这些图通常填满屏幕并在很大程度上重叠.

我的问题是,在计算过程中,当我点击它们时,部分或完全遮挡的数字不会刷新.它们只是一片空白.

我想在点击图形时强制重绘,否则显示它是没用的.目前,我在代码中插入了pdb.set_trace(),所以我可以停下来点击所有数字,看看发生了什么

有没有办法强制matplotlib重绘一个数字,只要它获得鼠标焦点或调整大小,即使它忙于做其他事情?

python matplotlib

6
推荐指数
1
解决办法
1745
查看次数

傅立叶空间滤波

我有一个长度为T的实矢量时间序列x和一个长度为t的滤波器h.h是傅里叶空间中的滤波器,实数和对称.大概是1/f.

我想用h过滤x得到y.

假设t == T并且长度为T的FFT可以适合存储器(两者都不是真的).要在python中获取我的过滤后的x,我会这样做:

import numpy as np
from scipy.signal import fft, ifft

y = np.real( np.ifft( np.fft(x) * h ) ) )
Run Code Online (Sandbox Code Playgroud)

由于条件不成立,我尝试了以下hack:

  1. 选择填充大小P <t/2,选择块大小B使得B + 2P是良好的FFT大小
  2. 通过样条插值缩放h,大小为B + 2P> t(h_scaled)
  3. y = []; 环:
    • 从x获取长度为B + 2P的块(称为x_b)
    • 执行y_b = ifft(fft(x_b)*h_scaled)
    • 从y_b的任一侧删除填充P并与y连接
    • 选择下一个x_b与最后一个重叠P

这是一个好策略吗?如何以良好的方式选择填充P?这样做的正确方法是什么?我不太了解信号处理.这是一个很好的学习机会.

我正在使用cuFFT来加快速度,因此如果大部分操作都是FFT,那将会很棒.实际问题是3D.此外,我不关心非因果过滤器的工件.

谢谢,保罗.

python signal-processing numpy fft scipy

5
推荐指数
1
解决办法
2957
查看次数

重复的numpy子阵列

这是我的问题的简化.我有一个numpy数组:

x = np.array([0,1,2,3])
Run Code Online (Sandbox Code Playgroud)

我有一个功能:

def f(y): return y**2
Run Code Online (Sandbox Code Playgroud)

我可以计算f(x).

现在假设我真的想为重复的x计算f(x):

x = np.array([0,1,2,3,0,1,2,3,0,1,2,3])
Run Code Online (Sandbox Code Playgroud)

有没有办法在不创建x的重复版本的情况下以一种对f透明的方式执行此操作?

在我的特定情况下,f是一个涉及的函数,其中一个参数是x.我希望能够在重复x时计算f而不实际重复它,因为它不适合内存.

重写f以处理重复的x将是有效的,我希望有一种聪明的方法可能将numpy数组子类化为此.

任何提示赞赏.

python numpy

4
推荐指数
1
解决办法
437
查看次数