如何为 Python 中的元组分配标签?

How to assign labels to tuples in Python?

我是 Python 的新手,我在处理一些简单的事情时遇到了麻烦。我正在尝试为随机 (x,y) 实现感知器。我有两个 classes NP 我希望来自 class N 的数据具有 1 作为标签和来自 class P0 作为进一步计算的标签。 NP 定义如下:

random_positive = np.random.normal(100,45,100)
random_negative = np.random.normal(-100,45,100)
N=[(x,y) for x,y in zip(random_positive,random_negative)] 
P=[(x,y) for x,y in zip(random_negative,random_positive)]

我写了下面的代码,但结果不是我所期望的。

for (x,y) in N:
    z = 1
for (x,y) in P:
    z = 0

这是你想要的吗?

import numpy as np

random_positive = np.random.normal(100,45,100)
random_negative = np.random.normal(-100,45,100)
N=[(x,y,z) for x,y,z in zip(random_positive, random_negative, [1])] 
P=[(x,y,z) for x,y,z in zip(random_negative, random_positive, [0])]

print(N)
[(139.78882745432074, -58.398783286084324, 1)]
print(P)
[(-58.398783286084324, 139.78882745432074, 0)]
import numpy as np
random_positive = np.random.normal(100,45,100)
random_negative = np.random.normal(-100,45,100)
N=list(zip(random_positive, random_negative, [1]*len(random_positive)))
P=list(zip(random_negative, random_positive, [0]*len(random_positive)))

如 juanpa.arrivillaga 所述,list() 是更适合您的目的的方法。

random_positive = np.random.normal(100,45,100)
random_negative = np.random.normal(-100,45,100)
N=[(x,y,1) for x,y in zip(random_positive, random_negative)] 
P=[(x,y,0) for x,y in zip(random_negative, random_positive)]

就是你想要的元组。

我考虑了你的回复。 下面呢?

import numpy as np

random_positive = np.random.normal(100,45,5)
random_negative = np.random.normal(-100,45,5)
N=[(x,y) for x,y in zip(random_positive, random_negative)] 
P=[(x,y) for x,y in zip(random_negative, random_positive)]
Z1={(x,y): 1 for x, y in N}
Z2={(x,y): 0 for x, y in P}
Z=dict()
Z.update(Z1)
Z.update(Z2)
print(Z)
print(Z[N[2]])
print(Z[P[2]])
import numpy as np
random_positive = np.random.normal(100,45,100)
random_negative = np.random.normal(-100,45,100)
N=[(x,y) for x,y in zip(random_positive,random_negative)] 
P=[(x,y) for x,y in zip(random_negative,random_positive)]

N1=[]
for i in N:
    i=i+(1,)
    N1.append(i)
P1=[]
for j in P:
    j=j+(0,)
    P1.append(j)

因此 N1 和 P1 将具有您需要的输出格式。

现在,当您输入 "coordinate" 并且必须根据它分别属于 N1 还是 P1 分配 "label" 1 或 0 时,运行 以下代码:

#lets assume that your input coordinates are "a" and "b"
(a,b)=(52.98933490111767, -59.3188037771503)
for i in N1:
    if (a,b)==(i[0],i[1]):
        z=i[2]
for j in P1:
    if (a,b)==(j[0],j[1]):
        z=j[2]

在 运行 上面的代码之后,如果 (a,b) 出现在 N1 中,z 将是 1,如果 (a,b)出现在 P1z 将是 0