使用np.vectorize向量化np.linalg.det函数报错,求问题原因
问题原因
np.vectorize会把输入数组拆解到标量级别逐个传递给被包装函数,但np.linalg.det要求输入至少是二维数组。你的fulldata是形状为(4,2,2)的三维数组,vectorize会遍历到最底层的每个0维标量并传给det,这完全不符合det的输入要求,因此抛出维度错误。
解决方案
最优方案:直接调用np.linalg.det
np.linalg.det本身支持批量处理三维数组,它会自动将最后两个维度视为单个矩阵,计算每个矩阵的行列式,无需额外封装:
np.linalg.det(fulldata)
备选方案:列表推导式
如果需要显式遍历每个矩阵,也可以用列表推导式实现(效率略低于直接调用det):
np.array([np.linalg.det(mat) for mat in fulldata])
内容的提问来源于stack exchange,提问作者processing_statistician
相关产品推荐
相关产品推荐

