查找索引numpython

查找索引numpython,python,numpy,Python,Numpy,考虑形状(8,8)的NumPy数组 我的问题:第50个元素的索引(x,y)是什么 注意:用于按行计算元素 例如,在数组A中,其中A=[[1,5,9],[3,0,2]]第五个元素将是“0” 有人能解释一下如何找到这个问题的一般解决方案,以及这个特定问题的解决方案吗?您可以使用它来找到与展平阵列索引对应的坐标。通常np.array以索引0开始,您必须对此进行调整 import numpy as np a = np.arange(64).reshape(8,8) np.unravel_index(5

考虑形状(8,8)的NumPy数组

我的问题:第50个元素的索引(x,y)是什么

注意:用于按行计算元素

例如,在数组A中,其中
A=[[1,5,9],[3,0,2]]
第五个元素将是“0”

有人能解释一下如何找到这个问题的一般解决方案,以及这个特定问题的解决方案吗?

您可以使用它来找到与展平阵列索引对应的坐标。通常
np.array
以索引0开始,您必须对此进行调整

import numpy as np

a = np.arange(64).reshape(8,8)
np.unravel_index(50-1, a.shape)
输出:


numpy.ndarray.falten(a)
返回折叠为一维的数组
a
的副本。请注意,计数从0开始,因此,在您的示例中,0是第4个元素,1是第0个元素

import numpy as np
arr = np.array([[1, 5, 9], [3, 0, 2]])
fourth_element = np.ndarray.flatten(arr)[4]


8x8矩阵也是如此。

在形状(r,c)的NumPy数组
a
(就像列表列表一样)中,第n个元素是

a[(n-1) // c][(n-1) % c],
假设n从1开始,如示例中所示。 这与r无关。因此,当r=c=8,n=50时,上述公式正好

a[6][1].
让我用你的例子来展示更多:

from numpy import *

a = array([[1, 5, 9], [3, 0, 2]])
r = len(a)
c = len(a[0])
print(f'(r, c) = ({r}, {c})')
print(f'Shape: {a.shape}')
for n in range(1, r * c + 1):
    print(f'Element {n}: {a[(n-1) // c][(n-1) % c]}')
结果如下:

(r, c) = (2, 3)
Shape: (2, 3)
Element 1: 1
Element 2: 5
Element 3: 9
Element 4: 3
Element 5: 0
Element 6: 2

你可能想要接受一个答案。
from numpy import *

a = array([[1, 5, 9], [3, 0, 2]])
r = len(a)
c = len(a[0])
print(f'(r, c) = ({r}, {c})')
print(f'Shape: {a.shape}')
for n in range(1, r * c + 1):
    print(f'Element {n}: {a[(n-1) // c][(n-1) % c]}')
(r, c) = (2, 3)
Shape: (2, 3)
Element 1: 1
Element 2: 5
Element 3: 9
Element 4: 3
Element 5: 0
Element 6: 2