簡體   English   中英

從隨機2D numpy數組中提取ith和ith + 1

[英]extracting ith and ith+1 from random 2D numpy array

我有一個由

[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:接受1和3,並在我的2D numpy數組中找到[1:3]的值。
  2. 循環2:接受3和8,並在我的2D numpy數組中找到[3:8]的值。

  1. 循環10:取7和1,並在我的2D numpy數組中找到[7:1]的值。

我想將這些值加到我的2D numpy數組中。

到目前為止,我有:array = [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]

您可以進行兩次切片以使其起作用。

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

另外,您放置的數組有11個元素,這意味着第10個循環將不是您想要的。

您可以使用簡單的切片來完成這項工作。

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

我不確定我是否完全理解您要達到的目標,但是……類似的事情呢?

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](而不是范圍[x:y])。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM