- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将一些 Python/Numpy 代码转换为 Cython 以加快速度。这是我的代码:
cimport numpy as np
import numpy as np
from numpy import *
import pylab as pl
from pylab import *
from scipy import integrate
def myc_rb_e2f(np.ndarray[double,ndim=1] y = np.zeros(7),double t, double k,double d):
M = y[0]
E = y[1]
CD = y[2]
CE = y[3]
R = y[4]
RP = y[5]
RE = y[6]
cdef double S = 0.01
if t > 300.0:
S = 5.0
#if t > 400
#S = 0.01
cdef double t1 = k[0]*S/(k[7]+S)
cdef double t2 = k[1]*(M/(k[14]+M))*(E/(k[15]+E))
cdef double t3 = k[5]*M/(k[14]+M)
cdef double t4 = k[11]*CD*RE/(k[16]+RE)
cdef double t5 = k[12]*CE*RE/(k[17]+RE)
cdef double t6 = k[2]*M/(k[14]+M)
cdef double t7 = k[3]*S/(k[7]+S)
cdef double t8 = k[6]*E/(k[15]+E)
cdef double t9 = k[13]*RP/(k[18]+RP)
cdef double t10 = k[9]*CD*R/(k[16]+R)
cdef double t11 = k[10]*CE*R/(k[17]+R)
dM = t1-d[0]*M
dE = t2+t3+t4+t5-k[8]*R*E-d[1]*E
dCD = t6+t7-d[2]*CD
dCE = t8-d[3]*CE
dR = k[4]+t9-k[8]*R*E-t10-t11-d[4]*R
dRP = t10+t11+t4+t5-t9-d[5]*RP
dRE = k[8]*R*E-t4-t5-d[6]*RE
dy = [dM,dE,dCD,dCE,dR,dRP,dRE]
return dy
cdef np.ndarray[double,ndim=1] t = np.zeros(10000)
t = np.linspace(0.,3000.,10000.)
# Initial concentrations of [M,E,CD,CE,R,RP,RE]
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
cdef np.ndarray[double,ndim=2] E_simulated = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=2] r = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=1] E_avg = np.zeros([10000])
cdef np.ndarray[double,ndim=1] k = np.zeros([19])
cdef np.ndarray[double,ndim=1] d = np.zeros([7])
cdef int i
for i in range (0,5000):
k[0] = 1.+0.1*randn(1)
k[1] = 0.15+0.05*randn(1)
k[2] = 0.2+0.05*randn(1)
k[3] = 0.2+0.05*randn(1)
k[4] = 0.35+0.05*randn(1)
k[5] = 0.001+0.0001*randn(1)
k[6] = 0.5+0.05*randn(1)
k[7] = 0.3+0.05*randn(1)
k[8] = 30.+5.*randn(1)
k[9] = 18.+3.*randn(1)
k[10] = 18.+3.*randn(1)
k[11] = 18.+3.*randn(1)
k[12] = 18.+3.*randn(1)
k[13] = 3.6+0.5*randn(1)
k[14] = 0.15+0.05*randn(1)
k[15] = 0.15+0.05*randn(1)
k[16] = 0.92+0.1*randn(1)
k[17] = 0.92+0.1*randn(1)
k[18] = 0.01+0.001*randn(1)
d[0] = 0.7+0.05*randn(1)
d[1] = 0.25+0.025*randn(1)
d[2] = 1.5+0.05*randn(1)
d[3] = 1.5+0.05*randn(1)
d[4] = 0.06+0.01*randn(1)
d[5] = 0.06+0.01*randn(1)
d[6] = 0.03+0.005*randn(1)
r = integrate.odeint(myc_rb_e2f,y0,t,args=(k,d))
E_simulated[:,i] = r[:,1]
for i in range(0,10000):
E_avg[i] = sum(E_simulated[i,:])/5000.
pl.plot(t,E_avg,'-ro')
pl.show()
我在尝试编译时遇到了很多错误:
Error compiling Cython file:
------------------------------------------------------------
...
dy = [dM,dE,dCD,dCE,dR,dRP,dRE]
return dy
cdef np.ndarray[double,ndim=1] t = np.zeros(10000)
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:48:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
cdef np.ndarray[double,ndim=1] t = np.zeros(10000)
t = np.linspace(0.,3000.,10000.)
# Initial concentrations of [M,E,CD,CE,R,RP,RE]
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:52:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
cdef np.ndarray[double,ndim=1] t = np.zeros(10000)
t = np.linspace(0.,3000.,10000.)
# Initial concentrations of [M,E,CD,CE,R,RP,RE]
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
cdef np.ndarray[double,ndim=2] E_simulated = np.zeros([10000,5000])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:53:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
t = np.linspace(0.,3000.,10000.)
# Initial concentrations of [M,E,CD,CE,R,RP,RE]
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
cdef np.ndarray[double,ndim=2] E_simulated = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=2] r = np.zeros([10000,5000])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:54:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
# Initial concentrations of [M,E,CD,CE,R,RP,RE]
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
cdef np.ndarray[double,ndim=2] E_simulated = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=2] r = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=1] E_avg = np.zeros([10000])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:55:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
# Initial concentrations of [M,E,CD,CE,R,RP,RE]
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
cdef np.ndarray[double,ndim=2] E_simulated = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=2] r = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=1] E_avg = np.zeros([10000])
cdef np.ndarray[double,ndim=1] k = np.zeros([19])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:56:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
cdef np.ndarray[double,ndim=2] E_simulated = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=2] r = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=1] E_avg = np.zeros([10000])
cdef np.ndarray[double,ndim=1] k = np.zeros([19])
cdef np.ndarray[double,ndim=1] d = np.zeros([7])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:57:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
cimport numpy as np
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:1:0: Buffer vars not allowed in module scope
An exception has occurred, use %tb to see the full traceback.
SystemExit: error: command 'gcc' failed with exit status 1
%run setup.py build_ext --inplace
running build_ext
cythoning myc_rb_e2f_pyx.pyx to myc_rb_e2f_pyx.c
building 'myc_rb_e2f_pyx' extension
C:\Python27\Scripts\gcc.exe -mno-cygwin -mdll -O -Wall -DMS_WIN64 -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC -c myc_rb_e2f_pyx.c -o build\temp.win-amd64-2.7\Release\myc_rb_e2f_pyx.o
Error compiling Cython file:
------------------------------------------------------------
...
dy = [dM,dE,dCD,dCE,dR,dRP,dRE]
return dy
cdef np.ndarray[double,ndim=1] t = np.zeros(10000)
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:48:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
cdef np.ndarray[double,ndim=1] t = np.zeros(10000)
t = np.linspace(0.,3000.,10000.)
# Initial concentrations of [M,E,CD,CE,R,RP,RE]
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:52:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
cdef np.ndarray[double,ndim=1] t = np.zeros(10000)
t = np.linspace(0.,3000.,10000.)
# Initial concentrations of [M,E,CD,CE,R,RP,RE]
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
cdef np.ndarray[double,ndim=2] E_simulated = np.zeros([10000,5000])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:53:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
t = np.linspace(0.,3000.,10000.)
# Initial concentrations of [M,E,CD,CE,R,RP,RE]
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
cdef np.ndarray[double,ndim=2] E_simulated = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=2] r = np.zeros([10000,5000])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:54:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
# Initial concentrations of [M,E,CD,CE,R,RP,RE]
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
cdef np.ndarray[double,ndim=2] E_simulated = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=2] r = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=1] E_avg = np.zeros([10000])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:55:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
# Initial concentrations of [M,E,CD,CE,R,RP,RE]
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
cdef np.ndarray[double,ndim=2] E_simulated = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=2] r = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=1] E_avg = np.zeros([10000])
cdef np.ndarray[double,ndim=1] k = np.zeros([19])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:56:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
cdef np.ndarray[double,ndim=1] y0 = np.array([0.,0.,0.,0.,0.4,0.,0.25])
cdef np.ndarray[double,ndim=2] E_simulated = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=2] r = np.zeros([10000,5000])
cdef np.ndarray[double,ndim=1] E_avg = np.zeros([10000])
cdef np.ndarray[double,ndim=1] k = np.zeros([19])
cdef np.ndarray[double,ndim=1] d = np.zeros([7])
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:57:31: Buffer types only allowed as function local variables
Error compiling Cython file:
------------------------------------------------------------
...
cimport numpy as np
^
------------------------------------------------------------
myc_rb_e2f_pyx.pyx:1:0: Buffer vars not allowed in module scope
An exception has occurred, use %tb to see the full traceback.
SystemExit: error: command 'gcc' failed with exit status 1
任何人都可以帮助我解决我在声明数组时出错的地方吗?
最佳答案
错误信息很清楚:缓冲区类型的变量在顶层是不允许的。将所有从 t
的声明开始的代码放在一个函数中,比如说 main
,然后调用它。
关于python - 将 Python/Numpy 代码转换为 Cython - 数组问题 - 缓冲区类型仅允许作为函数局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13024357/
我正在尝试创建一个包含 int[][] 项的数组 即 int version0Indexes[][4] = { {1,2,3,4}, {5,6,7,8} }; int version1Indexes[
我有一个整数数组: private int array[]; 如果我还有一个名为 add 的方法,那么以下有什么区别: public void add(int value) { array[va
当您尝试在 JavaScript 中将一个数组添加到另一个数组时,它会将其转换为一个字符串。通常,当以另一种语言执行此操作时,列表会合并。 JavaScript [1, 2] + [3, 4] = "
根据我正在阅读的教程,如果您想创建一个包含 5 列和 3 行的表格来表示这样的数据... 45 4 34 99 56 3 23 99 43 2 1 1 0 43 67 ...它说你可以使用下
我通常使用 python 编写脚本/程序,但最近开始使用 JavaScript 进行编程,并且在使用数组时遇到了一些问题。 在 python 中,当我创建一个数组并使用 for x in y 时,我得
我有一个这样的数组: temp = [ 'data1', ['data1_a','data1_b'], ['data2_a','data2_b','data2_c'] ]; // 我想使用 toStr
rent_property (table name) id fullName propertyName 1 A House Name1 2 B
这个问题在这里已经有了答案: 关闭13年前。 Possible Duplicate: In C arrays why is this true? a[5] == 5[a] array[index] 和
使用 Excel 2013。经过多年的寻找和适应,我的第一篇文章。 我正在尝试将当前 App 用户(即“John Smith”)与他的电子邮件地址“jsmith@work.com”进行匹配。 使用两个
当仅在一个边距上操作时,apply 似乎不会重新组装 3D 数组。考虑: arr 1),但对我来说仍然很奇怪,如果一个函数返回一个具有尺寸的对象,那么它们基本上会被忽略。 最佳答案 这是一个不太理
我有一个包含 GPS 坐标的 MySQL 数据库。这是我检索坐标的部分 PHP 代码; $sql = "SELECT lat, lon FROM gps_data"; $stmt=$db->query
我需要找到一种方法来执行这个操作,我有一个形状数组 [批量大小, 150, 1] 代表 batch_size 整数序列,每个序列有 150 个元素长,但在每个序列中都有很多添加的零,以使所有序列具有相
我必须通过 url 中的 json 获取文本。 层次结构如下: 对象>数组>对象>数组>对象。 我想用这段代码获取文本。但是我收到错误 :org.json.JSONException: No valu
enter code here- (void)viewDidLoad { NSMutableArray *imageViewArray= [[NSMutableArray alloc] init];
知道如何对二维字符串数组执行修剪操作,例如使用 Java 流 API 进行 3x3 并将其收集回相同维度的 3x3 数组? 重点是避免使用显式的 for 循环。 当前的解决方案只是简单地执行一个 fo
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我有来自 ASP.NET Web 服务的以下 XML 输出: 1710 1711 1712 1713
如果我有一个对象todo作为您状态的一部分,并且该对象包含数组列表,则列表内部有对象,在这些对象内部还有另一个数组listItems。如何更新数组 listItems 中 id 为“poi098”的对
我想将最大长度为 8 的 bool 数组打包成一个字节,通过网络发送它,然后将其解压回 bool 数组。已经在这里尝试了一些解决方案,但没有用。我正在使用单声道。 我制作了 BitArray,然后尝试
我们的数据库中有这个字段指示一周中的每一天的真/假标志,如下所示:'1111110' 我需要将此值转换为 boolean 数组。 为此,我编写了以下代码: char[] freqs = weekday
我是一名优秀的程序员,十分优秀!