我不确定以下问题是否有意义,因为我是新手.我试图在Cython中创建一个C函数,它返回一个numpy数组,如下所示.
cdef np.ndarray[np.int32_t, ndim=1] SumPlusOne(np.ndarray[np.int32_t, ndim=1] ArgArray):
cdef np.ndarray[int32_t, ndim=1] ReturnArray = np.zeros((len(ArgArray), dtype = np.int32)
ReturnArray = ArgArray + 1
return ReturnArray
Run Code Online (Sandbox Code Playgroud)
但是,不要让我编译它.但是,如果我删除函数的返回类型
cdef SumPlusOne(np.ndarray[np.int32_t, ndim=1] ArgArray):
...
Run Code Online (Sandbox Code Playgroud)
没有问题.
我的问题是,有没有办法为返回值声明numpy类型?我真的不知道这是否可行,因为我不知道np.ndarray是否需要转换为python类型.
谢谢
我有一个非常简单的问题.它与计算容差误差有关.
让我(在最后看)特征向量V和对角特征值D中的矩阵A的特征分解,并通过乘法V ^ -1*D*V再次构建它.
得到的值远不是A,误差很大.
我想知道我是否使用不正确的函数来完成此任务,或者至少我如何减少此错误.先感谢您
in[1]:import numpy
from scipy import linalg
A=matrix([[16,-9,0],[-9,20,-11],[0,-11,11]])
D,V=linalg.eig(A)
D=diagflat(D)
matrix(linalg.inv(V))*matrix(D)*matrix(V)
out[1]:matrix([[ 15.52275377, 9.37603361, 0.79257097],
[9.37603361, 21.12538282, -10.23535271],
[0.79257097, -10.23535271, 10.35186341]])
Run Code Online (Sandbox Code Playgroud) 我正在尝试检查映射是否存在,如果是,则取消映射。如果我尝试在没有检查的情况下执行此操作,则会遇到错误并退出。我想我也可以尝试捕获错误并添加异常,但我也找不到方法。
我试过:
if exists("map jjj")
unmap jjj
endif
Run Code Online (Sandbox Code Playgroud)
但它返回map jjj存在(即使不是真的),因为如果我在正常模式下运行
:map jjj
Run Code Online (Sandbox Code Playgroud)
它返回n j * gj。也就是说,它返回jmap 存在。
我没有进一步的想法