【发布时间】:2020-08-15 11:57:03
【问题描述】:
我正在使我为 uni 项目编写的程序更广泛,在我使用 3x3 矩阵之前,但现在它是一个 15 x 15 矩阵,我想创建一个 for 循环来填充值,而不是比我目前拥有的。我已经使这个示例代码更小了,但这是我想要放入 for 循环的内容:
distance_matrix=
[array1[0]-array2[0], array1[1]-array2[0], array1[2]-array2[0], array1[3]-array2[0],array1[4]-array2[0]],
[array1[0]-array2[1], array1[1]-array2[1], array1[2]-array2[1], array1[3]-array2[1],array1[4]-array2[1]],
[array1[0]-array2[2], array1[1]-array2[2], array1[2]-array2[2], array1[3]-array2[2],array1[4]-array2[2]],
[array1[0]-array2[3], array1[1]-array2[3], array1[2]-array2[3], array1[3]-array2[3],array1[4]-array2[3]],
[array1[0]-array2[4], array1[1]-array2[4], array1[2]-array2[4], array1[3]-array2[4],array1[4]-array2[4]]
所以这是一个 5x5 矩阵。如您所见,每个条目的值是 2 个数组中的值之间的差异。我首先想到的是循环这是一个 2 层嵌套的 for 循环,但它只生成了一个 5x1 矩阵,对角线上的值是 (i,i) 值。它看起来像这样:
distance_matrix=[[0 for x in range(0,5)] for y in range(0,5)]
for i range(0,5):
for j in range(0,5):
distance_matrix[i][j]=array1[i]-array2[j]
然后我尝试了一个 if 语句,只是一个我可以重塑的列表,并设置在外循环中的行上保持不变的值,但这再次生成了一个长度为 5 的列表(我真的不知道找出原因):
distance_matrix_list=[]
for col_val in range(0,5):
first_value=array1[col_val]
for row_val in range(0,5)):
if row_val<5):
distance_matrix_list.append([first_value-array2[row_val]])
distance_matrix=np.array(distance_matrix_list)
distance_matrix.reshape((5,5))
这一定很明显,我很沮丧,因为我错过了这一点。请帮忙!
【问题讨论】: