Python 提取第i个和第i个+;1来自随机2D numpy数组

Python 提取第i个和第i个+;1来自随机2D numpy数组,python,Python,我有一个numpy数组,由 [1,3,8,6,0,2,4,5,9,7] 此数组是由10个数字0-9组成的随机数组 我还有一个2D numpy数组,一个10X10的2D numpy数组,带有数值 我想使用我的1D numpy数组(上图)通过循环1D数组来访问我的2D numpy数组中的特定实例 循环1:接受1和3,并在我的2D numpy数组中查找[1:3]处的值 循环2:接受3和8,并在我的2D numpy数组中找到[3:8]处的值 循环10:接受7和1,并在我的2D numpy数组中找到[

我有一个numpy数组,由

[1,3,8,6,0,2,4,5,9,7]
此数组是由10个数字0-9组成的随机数组

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

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

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

    这在某种程度上是可行的,但是如何让它访问第一个元素的最后一个元素呢?i、 e.查找[7,1]

    您可以进行两次切片以使其正常工作

    values = 0
    for i in range(len(array)): 
        a = Matrix[array[i],array[i+1]]
        values += a
    

    此外,您放置的数组有11个元素,这意味着第10个循环将不是您想要的。

    您可以执行两次切片以使其正常工作

    values = 0
    for i in range(len(array)): 
        a = Matrix[array[i],array[i+1]]
        values += a
    

    另外,您放置的数组有11个元素,这意味着第10个循环将不是您想要的。

    我不确定我是否完全理解您试图实现的目标,但是。。。 像这样的怎么样

    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,以避免索引超出范围错误


    我还从2D数组中获取了值[x,y](而不是范围[x:y])。

    我不确定我是否完全理解您试图实现的目标,但是。。。 像这样的怎么样

    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,以避免索引超出范围错误


    我还从2D数组中获取了值[x,y](而不是范围[x:y])。

    您可以使用简单的切片来实现这一点

    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])
    

    您可以使用简单的切片来实现这一点

    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])
    


    循环10是9和7吗?为什么你要考虑7和1?还有,你的数组包含0到0的11个数字。我道歉,我会修正这个Nook。看我的答案。据我看来,你不需要一个for循环。这会使事情变得更慢。圈10不是9和7吗?为什么你会考虑并考虑7和1?还有,你的数组包含11。从0到10的数字。很抱歉,我现在就解决这个问题。请看我的答案。据我所知,你不需要for循环。这只会让事情变得更慢。非常感谢你这么快地回答。我现在就尝试一下:)这似乎行得通,但只是针对在1D数组的最后一个条目上使用“array[I+1]”的问题。我收到一个错误“索引15不适用于大小为15的axis 1”-非常感谢您的帮助:)非常感谢您这么快的回复。我现在将尝试:)这似乎有效,但仅适用于在1D数组的最终条目上使用“数组[I+1]”的问题。我收到一个错误“索引15不适用于大小为15的axis 1”“-非常感谢你的帮助:)非常感谢你回复得这么快。我现在就来试试:)非常感谢你这么快回复。我现在就来试试:)非常感谢。我希望没问题,我问了一些问题,请:这只是在[7,1]处找到值吗?哦,对不起,我正在做的是获取数组的第一个值并将其附加到末尾。因此,如果第一个元素是2,最后一个元素是7,那么它将在末尾追加2,并在[7,2]处取值。我现在改正了。我明白了-谢谢你的帮助:)非常感谢你的帮助。我希望没问题,我问了一些问题,请:这只是在[7,1]处找到值吗?哦,对不起,我正在做的是获取数组的第一个值并将其附加到末尾。因此,如果第一个元素是2,最后一个元素是7,那么它将在末尾追加2,并在[7,2]处取值。我现在更正了。我明白了-谢谢你的帮助:)