添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
通过索引可以修改python的列表,numpy数组同样支持该操作,除此之外,我们还可以对数组的维度进行修改,这个是python列表无法支持的。

1. 根据索引修改numpy数组里的元素

import numpy as np
array_1 = np.ones(2)
print(array_1)      # [1. 1.]
array_1[0] = 100
print(array_1)      # [100.   1.]
array_2 = np.zeros((3, 4))
print(array_2)
array_2[2][2] = 100
print(array_2)

我在程序里,通过索引对数组里的元素进行修改,程序输出结果

[1. 1.]
[100.   1.]
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
[[  0.   0.   0.   0.]
 [  0.   0.   0.   0.]
 [  0.   0. 100.   0.]]

2. 使用reshape函数修改numpy数组的维度

我先创建一个拥有12个元素的一维ndarray,然后使用reshape方法将数组的维度修改为(3, 4), 数组从一维变成了二维, 最后使用reshape方法将数组的维度修改为(12, ), 从二维降为一维。

强调一点,所谓修改数组的维度,并不是修改原数组,而是返回一个新的数组。

import numpy as np
array = np.arange(12)
print(array)
array = array.reshape((3, 4))       # 1维变2维
print(array)
array = array.reshape((12, ))       # 2维变1维
print(array)

程序输出结果

[ 0  1  2  3  4  5  6  7  8  9 10 11]
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[ 0  1  2  3  4  5  6  7  8  9 10 11]

3. 给数组增加新的轴(维度)

给数组增加新的轴(维度),有两种方法,一种是使用np.newaxis增加维度,一种是np.expand_dims增加维度,它们可以让一维数组变成二维数组,二维变三维,以此类推。

3.1 np.newaxis

import numpy as np
array = np.array([1, 2, 3, 4, 5, 6])
array = array[:, np.newaxis]
print(array)
print(array.shape)

array最初被创建为一维数组,添加了一个新的轴,变成了二维数组,程序输出结果

(6, 1)

np.newaxis 加入的位置不同,生成的二维数组的维度也会不同,上面的例子二维数组的维度是(6, 1), 6行1列,下面的例子,我将生成一个1行6列的二维数组

import numpy as np
array = np.array([1, 2, 3, 4, 5, 6])
array = array[np.newaxis, :]
print(array)
print(array.shape)

程序输出结果

[[1 2 3 4 5 6]]
(1, 6)

3.2 np.expand_dims

使用和3.1 相同的例子,先生成一个6行1列的二维数组

import numpy as np
array = np.array([1, 2, 3, 4, 5, 6])
array = np.expand_dims(array, axis=1)
print(array)
print(array.shape)
(6, 1)

如果让参数axis的值为0,则生成一个1行6列的二维数组

import numpy as np
array = np.array([1, 2, 3, 4, 5, 6])
array = np.expand_dims(array, axis=0)
print(array)        # [[1 2 3 4 5 6]]
print(array.shape)  # (1, 6)