You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Cython中无法为NumPy数组赋值的问题求助

解决Cython中NumPy一维数组整体赋值的错误

你遇到的ValueError是因为对numpy.ndarray构造函数的参数用法理解有误:

  • cnp.ndarray([1,2,3])里的[1,2,3]被当成了数组的形状参数,numpy会认为你要创建一个3维数组(各维度大小为1、2、3),这和你声明的ndim=1一维数组类型冲突,所以报错。

正确的整体赋值方式

有两种简单的解决办法:

  1. 使用np.array()直接生成一维数组并赋值
import numpy as np
cimport numpy as cnp

cdef int num = 3
cdef cnp.ndarray[cnp.int_t, ndim = 1] Weight = np.ones((num), dtype = "int")
# 替换为正确的整体赋值
Weight = np.array([1,2,3], dtype=np.int_)
print(Weight)

输出:[1 2 3]

  1. 若要直接用cnp.ndarray构造,需明确指定形状和数据缓冲区
import numpy as np
cimport numpy as cnp

cdef int num = 3
cdef cnp.ndarray[cnp.int_t, ndim = 1] Weight = np.ones((num), dtype = "int")
# 先定义数据缓冲区,再指定形状构造数组
cdef int[:] data = [1,2,3]
Weight = cnp.ndarray(shape=(3,), dtype=np.int_, buffer=data)
print(Weight)

输出:[1 2 3]

内容的提问来源于stack exchange,提问作者Sumanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:55:29