numpy 中轴的一个理解
首先看看这段代码与输出的结果
import numpy as np
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print(a)
print(np.char.center('xwhking',50,'-'))
print(np.amin(a,1))
print(np.char.center('xwhking',50,'-'))
print(np.amin(a,0))
print(np.char.center('xwhking',50,'-'))
print(np.amax(a))
print(np.char.center('xwhking',50,'-'))
print(np.amax(a,axis=0))
result:
[[3 7 5]
[8 4 3]
[2 4 9]]
---------------------xwhking----------------------
[3 3 2]
---------------------xwhking----------------------
[2 4 3]
---------------------xwhking----------------------
9
---------------------xwhking----------------------
[8 7 9]
先分析一下结果,当用轴去求numpy数据的最小值的时候,当轴 = 1 的时候,很自然我们就能想到去到每行里面去求最小值然后返回一个数组,但是当轴 = 0 的时候,却不知道结果是如何来的了。
然后对轴的概念进行一个简单的了解
在NumPy中,“轴”(axis)的概念是指数组的维度。当你创建一个多维数组时,每个维度都有一个轴,轴的数量等于数组的维度数。
考虑一个二维数组(也可以称为矩阵),比如:
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6]])
这个数组有两个维度,第一个维度包含两个元素(即行),第二个维度包含三个元素(即列)。在NumPy中,第一个维度(行)被称为轴0,第二个维度(列)被称为轴1。
你可以通过指定轴来对数组进行操作,例如计算沿某个轴的和、平均值或者执行其他操作。例如,如果要计算每列的和,你可以使用np.sum()
函数,并指定axis
参数为1:
column_sum = np.sum(arr, axis=1)
这将返回一个包含每列和的一维数组。
理解轴的概念对于在NumPy中进行数组操作非常重要,因为它们允许你沿特定的维度进行计算,使得你能够灵活地操作多维数组。
根据上面概念的理解,现在我们来分析一下当轴 = 0 时的结果
首先我们的 a
ndarray是这样的
[[3 7 5]
[8 4 3]
[2 4 9]]
轴为 0 说明只比较第一层的内容求最小值,我们可以这样来看
把上面的数据进行一个变形理解
[
a, # = [3,7,5]
b, # = [8,4,3]
c # = [2,4,9]
]
现在把他们看成一个元素了就好理解了,但是还有一个问题,他们类型是数组怎么去求最小值呢
这里我的一个理解就是 numpy 的一个广播机制,因为都是一个 ndarray 那么在对应位置上求最小值不就好了。
通过结果来看这样的理解是正确的。