gpt4 book ai didi

Python错误: Setting an array element with a sequence

转载 作者:行者123 更新时间:2023-12-01 04:27:06 27 4
gpt4 key购买 nike

我是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)

它重复打印(2,)

ker[i, j] 取 1 个值; 2 个值是序列

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

您需要帮助来弄清楚为什么是(2,)吗?我可以建议在交互式 shell 中单步执行循环,并查看沿途各个点的形状。

<小时/>

dot 的 2 个输入如下所示:

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

一个标量和一个 2 元素数组 - 因此也是一个 2 元素数组。

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

<小时/>

您可能可以用单个点乘积替换双迭代(或者如果需要,可以使用 einsum 调用)。但让我们先让这个迭代开始工作。

关于Python错误: Setting an array element with a sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32939739/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com