读书笔记 numpy入门 第2章 数组变形

https://github.com/jakevdp/PythonDataScienceHandbook

reshape()

https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html

Gives a new shape to an array without changing its data.

在不改变数据的情况下,进行数组的变形,变成你想要的n行n列。

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np
a = np.arange(6)
a

>>> array([0, 1, 2, 3, 4, 5])

b = np.arange(6).reshape((3, 2))
b

>>> array([[0, 1],
[2, 3],
[4, 5]])

newaxis()

https://stackoverflow.com/questions/29241056/how-does-numpy-newaxis-work-and-when-to-use-it

newaxis()可使当前数组的维度增加一个维度(dimension)。

  • 1D array 会变成 2D array
  • 2D array 会变成 3D array
  • 3D array 会变成 4D array
  • 4D array 会变成 5D array
1
2
3
4
5
6
7
x1 = np.arange(1,10).reshape(3,3)
print(x1)

# 3行3列
>>> array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])

切片操作中利用newaxis():

1
2
3
4
5
6
7
8
9
x1_new = x1[:,np.newaxis]
print(x1_new)

# dimension (3,1,3)
>>> array([[[1, 2, 3]],

[[4, 5, 6]],

[[7, 8, 9]]])

书上的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
x = np.array([1, 2, 3])

# 通过变形获得的行向量
x.reshape((1, 3))

>>> array([[1, 2, 3]])

# 通过newaxis获得的行向量
x[np.newaxis, :]

>>> array([[1, 2, 3]])

# 通过变形获得的列向量
x.reshape((3, 1))

>>> array([[1],
[2],
[3]])

# 通过newaxis获得的列向量
x[:, np.newaxis]

>>> array([[1],
[2],
[3]])