从随机2D numpy数组中提取第i和第i + 1

时间:2018-04-19 22:54:14

标签: python

我有一个由

组成的numpy数组
[1,3,8,6,0,2,4,5,9,7]

此数组是一个由10个数字0-9组成的随机数组。

我还有一个2D numpy数组,一个带数值的10X10 2D numpy数组。

我想通过循环遍历1D数组,使用我的1D numpy数组(上图)访问2D numpy数组中的特定实例

  1. 循环1:接受1和3,并在我的2D numpy数组中找到[1:3]处的值。
  2. 循环2:接收3和8,并在我的2D numpy数组中找到[3:8]处的值。
    1. 循环10:接受7和1,并在我的2D numpy数组中找到[7:1]处的值。
    2. 我想在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]

3 个答案:

答案 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]范围。