Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用CFFI将多个numpy数组传递给C_Python_Python 3.x_Numpy_Python Cffi - Fatal编程技术网

Python 使用CFFI将多个numpy数组传递给C

Python 使用CFFI将多个numpy数组传递给C,python,python-3.x,numpy,python-cffi,Python,Python 3.x,Numpy,Python Cffi,我有以下几点(在现实生活中,C代码要复杂得多,我不想改变它。它在任何地方都使用全局变量) 这确实是我得到的。但是,如果我去掉我调用v.\uu repr\uu()的那一行,我会得到以下结果: 0.000000 0.000000 0.000000 1.000000 1.000000 2.000000 2.000000 2.000000 4.000000 3.000000 3.000000 6.000000 i、 e.x的内存似乎要么被y覆盖,要么指向y。如果我只有x和y(没有z),那么事情就会按预

我有以下几点(在现实生活中,C代码要复杂得多,我不想改变它。它在任何地方都使用全局变量)

这确实是我得到的。但是,如果我去掉我调用
v.\uu repr\uu()
的那一行,我会得到以下结果:

0.000000 0.000000 0.000000
1.000000 1.000000 2.000000
2.000000 2.000000 4.000000
3.000000 3.000000 6.000000
i、 e.
x
的内存似乎要么被
y
覆盖,要么指向
y
。如果我只有
x
y
(没有
z
),那么事情就会按预期进行

使用
double
而不是
float
表现出相同的行为


你知道我做错了什么吗??谢谢

使阵列保持活动状态,否则它们将被垃圾收集:

arrs = []
for i, k in enumerate(['x','y', 'z']):
    v = i*np.arange(n, dtype=np.float32)
    arrs.append(v)
    ...
0.000000 0.000000 0.000000
1.000000 1.000000 2.000000
2.000000 2.000000 4.000000
3.000000 3.000000 6.000000
arrs = []
for i, k in enumerate(['x','y', 'z']):
    v = i*np.arange(n, dtype=np.float32)
    arrs.append(v)
    ...