Python错误:使用sequen设置数组元素

2024-10-03 06:31:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,所以请你忍受我吧!在

此功能:

def kerf(X,m):
        [n_samples, ]= X.shape
        n_sa, n_fe = m.shape
        ker = np.zeros((n_samples, n_sa))
        for i, x_i in enumerate(X):
            for j, m_j in enumerate(m):
                ker[i, j] = (np.dot(x_i, m_j))  # problem is here!!
        return ker

我这样称呼它:

^{pr2}$

myarray基本上是相同的矩阵。为什么?在


Tags: in功能fordefnpsazerosdot
1条回答
网友
1楼 · 发布于 2024-10-03 06:31:07

当我将问题行替换为:

print(np.dot(x_i, m_j).shape)

它反复打印(2,)。在

ker[i, j]取1个值;2个值是sequence。在

请给出数组在不同点的维数,例如myarray(我猜到了并尝试了(3,4)),以及问题点。print(...shape)numpy中必不可少的调试工具。在

您是否需要帮助来找出它是(2,)的原因?我建议你在一个交互式的shell中逐步完成这个循环,在过程中观察不同点的形状。在


dot的2个输入如下所示:

^{pr2}$

标量和2元素数组-因此dot也是2元素数组。在

您需要解释这两个数组的大小,以及dot的大小。实际上,我们可以得到结果-它必须是(1,)或者一个标量-1的值放入一个插槽ker。在


您可能可以用一个dot产品(或者如果需要的话使用einsum调用)来替换双重迭代。但是让我们先让这个迭代生效。在

相关问题 更多 >