繁体   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