如何计算一维阵列和nd阵列之间的距离公式?

2024-04-27 05:20:18 发布

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

我想减去一个一维数组:

probe = [1, 2, 3, 4, 5, 6] 

从nd数组中的每个元素:

k = np.array([["words words ", 1,1,3,4,6,7], ["blah blah", 2,8,7,5,3,2], [" please help me", 3,4, 5, 6, 7,1], [" What are you doing, man", 1,3,5,10,9,11]])

我删除了k数组的第0个索引,并将这些值存储在新的k中,以便现在比较的是我要比较的两个数组中的值。你知道吗

new_k = k
new_k = np.delete(new_k, 0, axis=1)

我正试图在nd数组中找到最接近输入的值。我需要帮助。你知道吗

到目前为止,我设法到了这里,但我迷路了

for i in range(len(new_k)):
    for j in range(len(new_k[0][1])):
        temp[j] = (new_k[1][j] - probe[j])
        new_k[i][1] = temp

print(new_k)
new_k2 = new_k*new_k

上面的代码引发此错误:

TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')

另外:我知道如何通过比较单个值和一个值数组来获得“最接近的值”,但我想通过数组对数组来实现这一点


Tags: in元素newforlennprange数组
3条回答
np.asarray(k[:,1:], dtype=int) - probe

Numpy数组并不意味着有多种数据类型。k实际上是一个字符串数组,因此在数组k中没有要减去的数字数据类型。你知道吗

如果您想保留第一列字符串,您应该查看pandas数据帧。您可以保留字符串作为数据帧的索引,但仍然将其作为数字数据数组进行操作。使用数据,可以执行以下操作:

df = pd.DataFrame(k[:, 1:].astype(int), index=k[:, 0])
df - probe

问题是numpy不像一个普通的列表,它一次只保存唯一的类型元素。如果有多个类型,则所有类型都转换为U32,即string。当您从列表中删除第一个元素时,其余元素仍然是字符串类型,而不是int。您应该将它们转换为int。因此,这个错误引发了:

TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')

当您尝试此操作时:

temp[j] = (new_k[1][j] - probe[j])

相关问题 更多 >