小编Sat*_*ato的帖子

每当尝试将 write_videofile 运行到 moviepy 中的剪辑时,都会出现“TypeError:必须是实数,而不是 NoneType”

示例代码:

from moviepy.editor import *
clip = VideoFileClip('video.mp4')
clip.write_videofile('video2.mp4', fps=30)
Run Code Online (Sandbox Code Playgroud)

显示以下消息后,表明视频正在构建和写入,

Moviepy - Building video video2.mp4.
Moviepy - Writing video video2.mp4
Run Code Online (Sandbox Code Playgroud)

出现以下错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\User\Anaconda3\lib\site-packages\decorator.py", line 232, in fun
    return caller(func, *(extras + args), **kw)
  File "C:\Users\User\Anaconda3\lib\site-packages\moviepy\decorators.py", line 54, in requires_duration
    return f(clip, *a, **k)
  File "C:\Users\User\Anaconda3\lib\site-packages\decorator.py", line 232, in fun
    return caller(func, *(extras + args), **kw)
  File "C:\Users\User\Anaconda3\lib\site-packages\moviepy\decorators.py", line 135, in use_clip_fps_by_default
    return f(clip, *new_a, **new_kw)
  File "C:\Users\User\Anaconda3\lib\site-packages\decorator.py", line …
Run Code Online (Sandbox Code Playgroud)

python ffmpeg video-processing moviepy

17
推荐指数
3
解决办法
2万
查看次数

使用快速傅立叶变换生成相关的随机势

我想使用指定的自相关函数在1D或2D空间中生成随机势,并且根据一些数学推导(包括Wiener-Khinchin定理和傅里叶变换的性质),事实证明可以使用以下方程式完成此操作: 产生潜力 其中phi(k)均匀分布在间隔[0,1)中。并且该功能满足phi条件,以确保产生的电势始终是真实的。自相关函数不应影响我在这里所做的事情,我采用简单的高斯分布自相关

相项和条件的选择phi(k)基于以下属性

  1. 相位项的模数必须为1(通过维纳-欣钦定理,即函数自相关的傅立叶变换等于该函数的傅立叶变换的模数);

  2. 实函数的傅立叶变换必须满足 傅里叶 (通过直接检查整数形式的Fourier变换的定义)。

  3. 产生的电势和自相关都是真实的。

通过结合这三个属性,该术语只能采用上述形式。

有关相关数学,您可以参考以下pdf的第16页:https : //d-nb.info/1007346671/34

我使用均匀分布随机生成了一个numpy数组,并将该数组的负数与原始数组连接在一起,从而使其满足上述条件phi(k)。然后我执行了numpy(逆)快速傅立叶变换。

我已经尝试过1D和2D情况,下面仅显示1D情况。

import numpy as np
from numpy.fft import fft, ifft
import matplotlib.pyplot as plt

## The Gaussian autocorrelation function 
def c(x, V0, rho):
    return V0**2 * np.exp(-x**2/rho**2) 

x_min, x_max, interval_x = -10, 10, 10000
x = np.linspace(x_min, x_max, interval_x, endpoint=False)

V0 = 1
## the correlation length
rho = 1 

## (Uniformly) randomly generated array for k>0
phi1 = …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy fft

7
推荐指数
1
解决办法
108
查看次数

通过 Python 并行求解具有大量初始条件的 ODE

我正在尝试使用scipy.integrate.odescipy.integrate.odeint求解大量(超过一千个)初始条件的 ODE 系统,但是执行循环的速度非常慢,并且 scipy 似乎没有提供用于输入 2D 数组(由一组指定初始条件的一维数组),并且选项vectorized似乎scipy.integrate.solve_ivp并不意味着它接受初始条件的二维数组(https://docs.scipy.org/doc/scipy/reference/ generated/scipy.integrate .solve_ivp.html)。我读过一个线程询问类似的问题(Vectorized SciPy odesolver),其中一个答案建议使用scipy.integrate.odeint,但是它似乎也不接受多维数组,所以它根本不明白如何实现它。有什么解决方案可以加快进程吗?除了矢量化之外,我还考虑过使用并行计算技术,但我对此并不熟悉,而且我认为它并没有真正像矢量化那样显着地加速程序?

python arrays numpy scipy ode

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

如何在Julia中获取当前工作目录的父目录

这似乎是一个简单的问题,但我在网上找不到任何答案。假设我当前的工作目录是C:/parent_folder/sub_folder,并且我想进入C:/parent_folderJulia。

编辑:我有一个使用 PyCall 的解决方案,但有没有更好的解决方案,最好不需要导入其他语言的库?

using PyCall 

function get_parent_directory()

    pathlib = pyimport("pathlib")
    path = pathlib.Path(pwd())
    s = string(path.parent)
    return split(s, "\'")[2]

end

get_parent_directory()
Run Code Online (Sandbox Code Playgroud)

directory file julia

6
推荐指数
2
解决办法
973
查看次数

在 Julia 中擦除以前的数据/图(Plots.jl,GR 后端)

我已经在 J​​ulia 中解决了描述粒子运动的 ODE,并将坐标和各自的时间保存在一个数组中。我想用粒子沿着求解的轨迹创建一个绘图的动画 gif 图像,但要做到这一点(我提出的唯一方法)是使用 绘制粒子的位置scatter,并擦除 的先前位置每时每刻的粒子。但是我只知道scatter!哪个会向绘图中添加更多粒子,而不是显示粒子位置的变化。那么我怎样才能在每次迭代时擦除以前的图,或者有更聪明的方法来做到这一点?如果我想使用绘图标记更早时刻粒子的轨迹怎么办?

plot animation gif ode julia

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

在 Julia 散点图中的点上绘制具有指定方向的箭头

有没有办法在 Julia 中绘制散点图(最好使用 gr 后端),其中每个点都有一个指向指定方向的箭头?

具体来说,我的任务是创建一个带有多个移动点的 gif 图像,每个点上都有一个指向其速度方向的小箭头。

plot scatter julia

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

无论如何要重置 Julia 中的当前工作目录?

假设当前工作目录是C:\(保存.jl文件的目录),然后我将cwd切换到一些子文件夹来执行一些任务。无论如何直接将cwd重置回C:\之后,即初始cwd?或者,无论如何,是否可以独立于当前工作目录来定位正在运行的 .jl 文件所在的目录?(无需事先将 cwd 保存为变量)

directory julia

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

在 Julia 中使用 Interpolations.jl 和 Dierckx.jl 插值函数

我正在尝试使用 Julia 中的 Interpolations.jl 和 Dierckx.jl 包进行函数插值。Interpolations.jl 的文档如下:

https://github.com/JuliaMath/Interpolations.jl/blob/master/doc/Interpolations.jl.ipynb

对于 Dierckx.jl:

https://github.com/kbarbary/Dierckx.jl

所以我尝试使用不同的函数来实验插值,例如: 一个简单的代码:

using Interpolations
xs = 0:5
f(x) = x^2 * abs(sin(3*x) + cos(x))
ys = f.(xs)
f_int = interpolate(ys, BSpline(Quadratic(Line(OnCell()))))
println("f(3.2) = ", f(3.2))
println("f_int(3.2) = ", f_int(3.2))
Run Code Online (Sandbox Code Playgroud)

二次插值应该是相当准确的,但结果如下:

f(3.2) = 12.007644743861604
f_int(3.2) = 2.973832923722435
Run Code Online (Sandbox Code Playgroud)

那么我对 Interpolations.jl 的功能有什么误解呢?Interpolations.jl 中的函数interpolate不接受数组xs作为参数,而只ys接受 ,所以我认为这可能是由于我“不正确”选择了xs?

然后我切换到 Dierckx.jl,它接受函数and中的xsand 。在我看来,在上面的示例中效果很好,因为我将函数插值行切换为:ysSpline1DSpline2DSpline1D

f_int = Spline1D(xs, ys)
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试2D时,问题又出现了:

using Dierckx
xs = 1:5 …
Run Code Online (Sandbox Code Playgroud)

arrays interpolation julia

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

对Julia中一维数组的所有元素求和

这是一个非常基本的问题,但是我找不到与此问题相关的问题。假设有一个类型为的数组Array{Int64,1},我想对数组中的所有元素求和。我在网上找到的语法只是sum在数组上使用该函数,如下所示:

sum([i for i in 1:999 if i%3==0 || i%5==0])
Run Code Online (Sandbox Code Playgroud)

但是我收到一条错误消息

MethodError: objects of type Int64 are not callable
Run Code Online (Sandbox Code Playgroud)

当我在stackoverflow帖子中尝试语法求和多维数组时,也会出现该消息。那么这是什么问题呢?

arrays sum julia

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