深入理解:Python中的轴和维度的关系

【引子】
这次刚入门了numpy,在其中使用numpy建立多维数组的时候提到了很多有关数组的维度和轴的一些相关的知识,而刚开始阅读的时候由于对这部分有些理解不到位,导致后面理解数组转换的时候出现了很多坑爹问题。所以特此写几个简单的实例分析一下。

【例子1,reshape】
import numpy as np
a = np.arange(6).reshape([3,2])
print(a)
[[0 1]
[2 3]
[4 5]]

print(a.shape)
(3, 2)

【例子2,添加1维和删掉1维】
(n,)数组与(n,1)数组的互转
reshape进行维度的转换
a = np.array([1,2,3])
print(a.shape)
(3,)

b = a.reshape(-1,1)
print(b.shape)
(3, 1)

把shape中为1的维度去掉
a = np.array([[1],[2],[3]])
print(a.shape)
(3, 1)

b = np.squeeze(a)
print(b.shape)
(3,)

a = np.array([1,2,3])
b = a[np.newaxis,:]
print(b)
[[1 2 3]]
print(b.shape)
(1, 3)

【例子3:通过newaxis添加维度】
c = a[:,np.newaxis]
print(c)
[[1]
[2]
[3]]
print(c.shape)
(3, 1)

【例子4:理解transpose】
numpy的转置
x = np.arange(4).reshape((2,2))
print( x)
array([[0, 1],
[2, 3]])
np.transpose(x)
array([[0, 2],
[1, 3]])

【例子5:求和】
对所有数字求和
print(np.sum(a))
21

对列求和
print(np.sum(a,axis=0))
[5 7 9]

对行求和
print(np.sum(a,axis=1))
[ 6 15]

对最后一个维度求和
print(np.sum(a,axis=-1))
[ 6 15]

【例子6:max函数】
x=np.array([[1001, 1002], [3, 4]])
x -= np.max(x)
print(x)
array([[ -1, 0],
[-999, -998]])

x=np.array([[1001, 1002], [3, 4]])
x -= np.max(x, axis=1)
print(x)
array([[ -1, 998],
[-999, 0]])

import numpy as np
x=np.array([[1001, 1002], [3, 4]])
x -= np.max(x, axis=1, keepdims=True)
print(x)
array([[-1, 0],
[-1, 0]])

你可能感兴趣的:(深入理解:Python中的轴和维度的关系)