我有一个由
组成的numpy数组[1,3,8,6,0,2,4,5,9,7]
此数组是一个由10个数字0-9组成的随机数组。
我还有一个2D numpy数组,一个带数值的10X10 2D numpy数组。
我想通过循环遍历1D数组,使用我的1D numpy数组(上图)访问2D numpy数组中的特定实例
我想在2D numpy数组中添加这些值。
到目前为止,我有: 阵列= [1,3,8,6,0,2,4,5,9,7]values =0
for i in range (0, len(array)): #this is 10
a=array2[i,array[i]+1] #array2 is the 2D numpy array with the values
values=values+a
这在某种程度上有效但是如何让它访问第一个元素?即找到[7,1]
答案 0 :(得分:2)
您可以进行两次切片以使其正常工作。
{{1}}
此外,您放置的数组有11个元素,这意味着第10个循环将不是您想要的。
答案 1 :(得分:2)
您可以使用简单的切片来完成这项工作。
arr = np.random.randint(0, 10, (10,10))
pos = np.array([1,3,8,6,0,2,4,5,9,7])
pos = np.append(pos, pos[0])
rows = pos[0:-1]
cols = pos[1:]
result = sum(arr[rows, cols])
答案 2 :(得分:0)
我不确定我完全明白你想要达到的目的但是...... 这样的事情怎么样?
a = np.array([1,3,8,6,0,9,2,4,5,9,7])
b = np.array(range(100)).reshape(10,10)
for i in range (len(a)):
print (a[i%len(a)],a[(i+1)%len(a)])
print (b[a[i%len(a)],a[(i+1)%len(a)]])
我从a
数组中删除了10,以避免索引超出范围错误。
我还取值[x,y](而不是2D数组中的[x:y]范围。