Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数组中的数组如何以numpy计算?_Python_Arrays_Python 3.x_Numpy_Python 3.8 - Fatal编程技术网

Python 数组中的数组如何以numpy计算?

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的新手,我在学习numpy的概念时遇到了上述问题。直到最后一行我才明白,但最后一行我还是不知道它是怎么发生的

答案是[3.8] [1.,5.]] 上述问题为MCQ(因此采用点击试验法得出答案)

呆在家里安全地呆着


提前感谢。

这是索引数组的一个示例(如果您是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)