目录
1、一维数组的切片和索引
2、二维数组的切片和索引
3、数组的复制
4、修改数组的维度
5、数组的拼接
#导入numpy模块
import numpy as np
#创建一维数组
a = np.arange(10)
print(a)
#索引访问 索引从0开始 长度-1
print("索引0处的元素:", a[0])
print("索引5处的元素:", a[5])
#负索引访问 倒数第一个的索引为-1
print("访问最后一个元素:", a[-1])
print("访问倒数第三个元素:", a[-3])
#切片正向索引操作 [start:stop:step]
print(a[:]) #从开始到结尾
print(a[3:]) #从索引3开始到结尾
print(a[3:5]) #从索引3开始到索引4 [start,stop)结尾
print(a[1:7:2]) #从索引1开始到索引6,步长是2
#切片中负索引操作
print(a[::-1]) #方向获取
print(a[-5:-2]) #从索引-5到索引-3结尾
输出结果为
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]
[13 14 15 16 17 18]
[19 20 21 22 23 24]]
[[ 1 2 3 4 5 6 7 8]
[ 9 10 11 12 13 14 15 16]
[17 18 19 20 21 22 23 24]]
[[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[13 14 15 16]
[17 18 19 20]
[21 22 23 24]]]
[[ 1 2 3 4 5 6 7 8]
[ 9 10 11 12 13 14 15 16]
[17 18 19 20 21 22 23 24]]
[[[ 1 2]
[ 3 4]
[ 5 6]]
[[ 7 8]
[ 9 10]
[11 12]]
[[13 14]
[15 16]
[17 18]]
[[19 20]
[21 22]
[23 24]]]
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
Process finished with exit code 0
#导入numpy模块
import numpy as np
#创建一维数组
a = np.arange(1,13)
print(a)
#对一维数组进行修改形状 (4,3)
a = a.reshape((4,3))
print(a)
#索引的使用
#获取第三行
print(a[2])
#获取第二行 第三列
print(a[1][2])
#切片的使用[行进行切片,列进行切片] [start:stop:step,start:stop:step]
#获取所有行所有列
print(a[:, :])
#获取所有行部分列 获取所有行第2列
print(a[:, 1])
#获取所有行部分列 获取所有行第1,2列
print(a[:, 0:2])
#获取部分行 所有列 获取奇数行所有列
print(a[::2, :])
#获取部分行 部分列 获取奇数行第1,2列
print(a[::2, 0:2])
#坐标获取 [行,列]
#获取第2行第3列
print(a[1][2])
print(a[1, 2])
#同时获取不同行不同列 获取第2行第3列 第3行第1列
print(a[1, 2], a[2][0])
print(np.array([a[1, 2], a[2][0]]))
#使用坐标
print(a[(1, 2), (2, 0)])
#负索引的使用
print("最后一行")
print(a[-1])
print("行倒序")
print(a[::-1])
print("行列倒序")
print(a[::-1, ::-1])
输出结果为
[ 1 2 3 4 5 6 7 8 9 10 11 12]
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
[7 8 9]
6
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
[ 2 5 8 11]
[[ 1 2]
[ 4 5]
[ 7 8]
[10 11]]
[[1 2 3]
[7 8 9]]
[[1 2]
[7 8]]
6
6
6 7
[6 7]
[6 7]
最后一行
[10 11 12]
行倒序
[[10 11 12]
[ 7 8 9]
[ 4 5 6]
[ 1 2 3]]
行列倒序
[[12 11 10]
[ 9 8 7]
[ 6 5 4]
[ 3 2 1]]
#导入numpy模块
import numpy as np
#创建一个二维的数组
a = np.arange(1, 13).reshape((3, 4))
print(a)
#对a数组进行切边处理,获取第一二行,第一二列
sub_a = a[:2, :2]
print(sub_a)
#获取sub_a中第一行第一列的值进行修改
# sub_a[0][0] = 100
# print(sub_a)
# print(a)
#切片通过可以获取到新数组,即使赋值给新的变量,但还是原来数组的视图。
# #如果对切片数组中元素的值进行修改会影响原来数组
#可以使用numpy中的copy方法实现
sub_aa = np.copy(a[:2, :2]) #深拷贝
sub_aa[0, 0] = 200
print(sub_aa)
print(a)
输出结果为
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[1 2]
[5 6]]
[[200 2]
[ 5 6]]
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
#导入numpy模块
import numpy as np
#通过reshape将一维数组修改为二、三维
#创建一个一维数组
a = np.arange(1, 25)
print(a)
#将一维修改为二维 (2,12) (3,8) (4,6)
b = a.reshape(4, 6)
print(b)
b = a.reshape((3, 8))
print(b)
#将一维修改为三维 (2,3,4)
c = a.reshape((2, 3, 4))
print(c)
#通过np.reshape()进行修改
d = np.reshape(a, (3, 8))#将一维修改为二维
print(d)
#将一维修改为三维
e = np.reshape(a, (4, 3, 2))
print(e)
#将对为数组修改为一维数组
# a = e.reshape(24)
a = e.reshape(-1)
print(a)
#通过 ravel、flatten函数将多维数组转化为一维数组
#ravel
a = e.ravel()
print(a)
#flatren
a = e.flatten()
print(a)
输出结果为
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]
[13 14 15 16 17 18]
[19 20 21 22 23 24]]
[[ 1 2 3 4 5 6 7 8]
[ 9 10 11 12 13 14 15 16]
[17 18 19 20 21 22 23 24]]
[[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[13 14 15 16]
[17 18 19 20]
[21 22 23 24]]]
[[ 1 2 3 4 5 6 7 8]
[ 9 10 11 12 13 14 15 16]
[17 18 19 20 21 22 23 24]]
[[[ 1 2]
[ 3 4]
[ 5 6]]
[[ 7 8]
[ 9 10]
[11 12]]
[[13 14]
[15 16]
[17 18]]
[[19 20]
[21 22]
[23 24]]]
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
#导入numpy模块
import numpy as np
#创建两个数组
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[11, 12, 13], [14, 15, 16]])
print(a)
print(b)
#使用hstack进行水平拼接
# c = np.hstack([a, b])
c = np.hstack((a, b))
print(c)
#使用vstack进垂直方向拼接
c = np.vstack((a, b))
print(c)
#concatenate的使用
print('axis=0 默认情况 垂直方向拼接 相当于vstack')
c1 = np.concatenate((a, b), axis=0)
c2 = np.concatenate((a, b))
print(c1)
print(c2)
#二维数组有两个轴 axis=0 axis=1
print("axis=1 水平方向拼接 相当于hstack")
c3 = np.concatenate((a, b), axis=1)
print(c3)
#三维数组有三个轴 axis=0 1 2
a = np.arange(1, 13).reshape(1, 2, 6)
print(a, a.shape)
b = np.arange(101, 113).reshape(1, 2, 6)
print(b, b.shape)
print('三维 axis=0')
c = np.concatenate((a, b), axis=0)
print(c, c.shape)
print('三维 axis=1')
c = np.concatenate((a, b), axis=1)
print(c, c.shape)
print('三维 axis=2')
c = np.concatenate((a, b), axis=2)
print(c, c.shape)
输出结果为
[[1 2 3]
[4 5 6]]
[[11 12 13]
[14 15 16]]
[[ 1 2 3 11 12 13]
[ 4 5 6 14 15 16]]
[[ 1 2 3]
[ 4 5 6]
[11 12 13]
[14 15 16]]
axis=0 默认情况 垂直方向拼接 相当于vstack
[[ 1 2 3]
[ 4 5 6]
[11 12 13]
[14 15 16]]
[[ 1 2 3]
[ 4 5 6]
[11 12 13]
[14 15 16]]
axis=1 水平方向拼接 相当于hstack
[[ 1 2 3 11 12 13]
[ 4 5 6 14 15 16]]
[[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]]] (1, 2, 6)
[[[101 102 103 104 105 106]
[107 108 109 110 111 112]]] (1, 2, 6)
三维 axis=0
[[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]]
[[101 102 103 104 105 106]
[107 108 109 110 111 112]]] (2, 2, 6)
三维 axis=1
[[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]
[101 102 103 104 105 106]
[107 108 109 110 111 112]]] (1, 4, 6)
三维 axis=2
[[[ 1 2 3 4 5 6 101 102 103 104 105 106]
[ 7 8 9 10 11 12 107 108 109 110 111 112]]] (1, 2, 12)
本次分享中我个人感觉输出结果有点长,下次可能考虑只放代码块,你们可以根据我的代码块自己去尝试并输出结果,这样也能提高你们打代码的积极性,希望本次分享能帮助到你们,有什么意见你们也可以在评论区留言,我会观看的。