python 多个变量for循环

x = np.zeros((n_samples, n_input))
y = np.zeros((n_samples, n_output))
for idx, (seq, label) in enumerate(zip(seqs, labels)):
    if not seq[0] == -1:
    x[idx][seq] = 1.
    y[idx][label] = 1.
    #pickTwo(seq, i_vec, j_vec)
     #mask[idx] = 1.
return x, y, mask, i_vec, j_vec

能解释一下这个for循环的意思吗

seqs labels是两个数组

x[idx][seq] = 1.
y[idx][label] = 1.

不明白这个是怎么进行赋值的

阅读 7k
2 个回答

这个东西:

np.zeros((n_samples, n_input)) 会生成一个多维数组,n_samples行,n_input列。
类似这样 [[ 0.,  0.], [ 0.,  0.]]

然后:

for idx, (seq, label) in enumerate(zip(seqs, labels)):
zip(seqs, labels) 会把这两个数组每项对应生成一个新数组
enumerate() 这个方法会拿到 index和元素,分别给了 idx,(seq, label)

介于x, y是多维数组,x[idx][seq] 就可以理解了。

是不是可以不需要循环

idx = np.argwhere(seqs[:,0]!=-1)
x[idx, seqs[idx,:]] = 1
y[idx, labels[idx,:]] = 1
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题