【发布时间】:2016-03-22 08:29:16
【问题描述】:
所以我有一个形状为 (4950,3) 的 numpy 数组。从这个数组中,我需要创建新数组(矩阵),其值和索引来自现有数组。
具体来说,
Array1 = array([ [ 0.,1.,0.4284256 ], [0.,2.,0.38090856], [1., 2.,0.32901526] ])。
new Array2 [0,1] = 0.4284256 , Array2[0,2]=0.38090856 and Array2[1,2]= 0.32901526
现在我使用 for 循环,但我认为必须有一种有效的方法。 A1 and A2 values
for i in range(A1.shape[0]):
A2[ A1[i,0], A1[i,1] ] = A1[i,2]
【问题讨论】:
-
新阵列的形状是什么?你能给出你的 Array2 的打印示例吗?可以重塑数组,但有关于尺寸的规则。
-
您想将 Array1 中的前 2 个元素映射到 Array2 中的坐标。我不认为 reshape 会在这里帮助你。你最好的选择是循环,或者使用 list comprehension 来获得更短的代码。
-
但是如果他想这样做,为什么它在array1中的最后一行的第三个元素会在array2中的位置1,2?规则是什么?
-
是的,我想将 Array1 中的前 2 个元素映射为 Array2 的坐标。说,Array1 有行 [1,2,33] 那么,“1”是 x 坐标,“2”是 'y 坐标','33' 是 A2[x][y] 处的值。即我需要设置 A[1,2]=33.
-
@armatita 形状可以是第一列的最大值,A1第二列的最大值。或者为了简化它,我们可以说 shape(100,100) 因为我的 A1 第一列的最大值将是 99。
标签: python arrays numpy matrix