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

我这样称呼它:

Z=kerf(myarray[0,[0,1]],myarray[:,[0,1]])

ker[i, j] = (np.dot(x_i, m_j))
ValueError: setting an array element with a sequence.

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

当我用替换问题行时

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

它重复打印CCD_ 1。

CCD_ 2取1;2的值是CCD_ 3。

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

你需要帮助弄清楚为什么是(2,)吗?我可以建议你在一个互动的外壳中穿过这个环,一路上看不同点的形状吗。


dot的2个输入看起来像:

(1.0, array([ 1.,  1.]))

一个标量和一个2元素数组-所以dot也是一个2元数组。

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


您可能可以用单个dot产品(或者如果需要,可以用einsum调用(来替换双迭代。但让我们先让这个迭代工作起来。

相关内容

  • 没有找到相关文章