python - 在 Python 中计算数组并​​赋值

标签 python arrays classification

我有两个多维数组,我想为那些匹配和不匹配的值评估和分配值。

array_1 = array([[1,2,2], [1,2,3],[1,2,1]])
array_2 = array([[1,1,2], [2,2,3],[3,1,1]])

这个想法是,对于数组 1 的每个成员,如果值相同,我想分配 0,如果不是,我想分配不同的值。逻辑是这样的。

(array_1 ==1 and array_2 ==1) = 0
(array_1 ==1 and array_2 ==2) = 10 
(array_1 ==1 and array_2 ==3) = 15
(array_1 ==2 and array_2 ==1) = 5
(array_1 ==2 and array_2 ==2) = 0
(array_1 ==2 and array_2 ==3) = 15
(array_1 ==3 and array_2 ==1) = 5
(array_1 ==3 and array_2 ==2) = 10
(array_1 ==3 and array_3 ==3) = 0

总体目标是检测变化。此方法的简要说明可在
上找到 https://www.e-education.psu.edu/geog883/node/496

最佳答案

首先:我不熟悉您在帖子中显示的数组格式。我从未见过在 Python 中仅使用方括号实例化数组。这不是函数调用。

第二:您的问题可能没有完全说明。但是:如果您向我们展示了输入数组中所有可能的值,则只有 1、2 和 3 是可能的。在这种情况下,array_1 和 array_2 中的元素只有 9 种可能的配对,并且您想要作为输出的值可以轻松存储在 3 x 3 查找表中。

最后:我使用 Numpy。您似乎想要数组,而 Numpy 很常见并且可以很好地处理数组。

import numpy as np
from itertools import product

arr1 = np.array([[1,2,2],[1,2,3],[1,2,1]], dtype=int)
arr2 = np.array([[1,1,2],[2,2,3],[3,1,1]], dtype=int)

lookup = np.array(((0,10,15),(5,0,15),(5,10,0)), dtype=int)
result = np.zeros_like(arr1)
for r, c in product(*[range(x) for x in arr1.shape]):
    a, b = arr1[r,c], arr2[r,c]
    result[r,c] = lookup[a-1,b-1]

print(arr1, "\n")
print(arr2, "\n")
print(result)

这是输出:

[[1 2 2]
 [1 2 3]
 [1 2 1]] 

[[1 1 2]
 [2 2 3]
 [3 1 1]] 

[[ 0  5  0]
 [10  0  0]
 [15  5  0]]

关于python - 在 Python 中计算数组并​​赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969215/

相关文章:

python - Matplotlib 堆叠条形图,具有类似于 pgfplots 的单独边缘颜色

python - 我可以让 Python 准确地告诉我哪个字符导致错误吗?

php - 数组在 foreach 中不断重复

arrays - powershell数组清除方法及赋值

machine-learning - 使用 Vowpal Wabbit 时计算 AUC

python - 这个创建和读取 mysql 记录的脚本不会运行

python - 如何在列表中优雅地将 '1-3,6-8' 转换为 '1 2 3 6 7 8'?

ruby - 有没有更通用的方法来声明这个数组?

java - 使用 Java 中的 Weka 进行基本文本分类

javascript - 匹配大量不同的句子(使用正则表达式模式解析)