首页 > 解决方案 > 用cupy(python)计算矩阵的行列式

问题描述

我目前正在编辑代码以在 python 中与 Cupy 一起使用以进行 GPU 加速。大多数编辑都需要从 numpy 到 cupy 的直接交换(例如 cp.array 而不是 np.array),但有一些小例外。但是,我在使用这部分代码时遇到了问题,它可以与 numpy 一起使用,我不确定为什么我突然收到此错误。我有以下代码

ab = (b - a)
ac = (c - a)
ap1 = (p1 - a)
ap2 = (p2 - a)

其中 a,b,c,p1 和 p2 都是一维 Cupy 数组

从这里我想使用以下来计算行列式。

testP1 = 1 if cp.linalg.det([ab,ac,ap1]) >0 else 0
testP2 = 1 if cp.linalg.det([ab,ac,ap2]) >0 else 0

这在 numpy 中工作正常(输入是 numpy 而不是 cupy 数组),但是,我现在收到以下错误

AttributeError:“列表”对象没有属性“ndim”

标签: pythonnumpyattributeerrorcupy

解决方案


正如 g2i 所评论的,cupy 不会隐式转换为数组,而 numpy 会,因此必须显式转换为cupy数组


推荐阅读