Python 数组中的数组如何以numpy计算?
大家好 希望你安全健康 我是numpy的新手,我在学习numpy的概念时遇到了上述问题。直到最后一行我才明白,但最后一行我还是不知道它是怎么发生的 答案是[3.8] [1.,5.]] 上述问题为MCQ(因此采用点击试验法得出答案) 呆在家里安全地呆着Python 数组中的数组如何以numpy计算?,python,arrays,python-3.x,numpy,python-3.8,Python,Arrays,Python 3.x,Numpy,Python 3.8,大家好 希望你安全健康 我是numpy的新手,我在学习numpy的概念时遇到了上述问题。直到最后一行我才明白,但最后一行我还是不知道它是怎么发生的 答案是[3.8] [1.,5.]] 上述问题为MCQ(因此采用点击试验法得出答案) 呆在家里安全地呆着 提前感谢。这是索引数组的一个示例(如果您是numpy新手,这不是一个基本概念)。arr2相当于: import numpy as np arr = np.arange(9, dtype = "float").reshape(3,
提前感谢。这是索引数组的一个示例(如果您是numpy新手,这不是一个基本概念)。arr2相当于:
import numpy as np
arr = np.arange(9, dtype = "float").reshape(3,3)
ind1 = np.array([[1,2],[0,1]])
ind2 = np.array([[0,2],[1,2]])
arr2 = arr[ind1,ind2]
ind
数组是(2,2)这一事实可能会使索引更难可视化
arr2 = [ [arr[ind1[0,0], ind2[0,0]], arr[ind1[0,1], ind2[0,1]]], [arr[ind1[1,0], ind2[1,0]], arr[ind1[1,1], ind2[1,1]]] ]
print(arr2)
#[[3.0, 8.0], [1.0, 5.0]]
让我们将它们展开-相同的值,但在1d中:
In [41]: ind1, ind2
Out[41]:
(array([[1, 2],
[0, 1]]),
array([[0, 2],
[1, 2]]))
使用该元组索引arr
会产生相同的值,但1d:
In [42]: ind1.ravel(), ind2.ravel()
Out[42]: (array([1, 2, 0, 1]), array([0, 2, 1, 2]))
这些值是成对的,因此:
In [43]: arr[_]
Out[43]: array([3, 8, 1, 5])
将其重塑为(2,2)以获得原始索引
arr2 = [ [arr[ind1[0,0], ind2[0,0]], arr[ind1[0,1], ind2[0,1]]], [arr[ind1[1,0], ind2[1,0]], arr[ind1[1,1], ind2[1,1]]] ]
print(arr2)
#[[3.0, 8.0], [1.0, 5.0]]
更一般地说,当使用数组进行索引时,它们是相互广播的。这些规则允许我们混合使用标量、一维数组和二维数组。尽管这里的广播
很容易,因为两个阵列具有相同的形状(2,2)