mac*_*low 5 numpy cython memoryview
我memoryview在一个numpy数组上有一个,并希望使用以下命令将另一个numpy数组的内容复制到其中memoryview:
import numpy as np
cimport numpy as np
cdef double[:,::1] test = np.array([[0,1],[2,3]], dtype=np.double)
test[...] = np.array([[4,5],[6,7]], dtype=np.double)
Run Code Online (Sandbox Code Playgroud)
但为什么这是不可能的呢?它让我一直在说
类型错误:只有长度为 1 的数组可以转换为 Python 标量 Blockquote
如果我从 a 复制memoryview到 a memoryview,或者从numpy数组numpy复制到数组,它工作正常,但是如何从numpy数组复制到 a memoryview?
这些作业有效:
cdef double[:,::1] test2d = np.array([[0,1],[2,3],[4,5]], dtype=np.double)
cdef double[:,::1] temp = np.array([[4,5],[6,7]], dtype=np.double)
test2d[...] = 4
test2d[:,1] = np.array([5],dtype=np.double)
test2d[1:,:] = temp
print np.asarray(test2d)
Run Code Online (Sandbox Code Playgroud)
显示
[[ 4. 5.]
[ 4. 5.]
[ 6. 7.]]
Run Code Online (Sandbox Code Playgroud)
我在/sf/answers/2129289571/添加了一个答案,该答案在缩进上下文中使用此内存视图“缓冲区”方法。
cpdef int testfunc1c(np.ndarray[np.float_t, ndim=2] A,
double [:,:] BView) except -1:
cdef double[:,:] CView
if np.isnan(A).any():
return -1
else:
CView = la.inv(A)
BView[...] = CView
return 1
Run Code Online (Sandbox Code Playgroud)
它不执行其他发布者想要的无复制缓冲区分配,但它仍然是有效的内存视图复制。
| 归档时间: |
|
| 查看次数: |
2215 次 |
| 最近记录: |