文章目录
numpy的使用可以在 jupyter notebook中使用比较能直观看到输出结果,不需要每次都用print输出,按住 Shift+Enter便可以直接输出结果。 如果方法被接收则需要再次输入所接受的名字才可以输出结果。
下载jupyter notebook:
pip install jupyter notebook
一维数组索引和切片
ndarray对象的内容可以通过索引或切片来访问和修改,与 Python中 list 的切片操作一样。
ndarray 数组可以基于 0 - n 的下标进行索引,并设置 start, stop及 step 参数进行,从原数组中切割出一个新数组。
【示例】一维数组索引和切片的使用
x = np.arange(10) # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x[2] # np.int64(2)
x[3:9] # array([3, 4, 5, 6, 7, 8])
x[3:9:2] # array([3, 5, 7])
x[-1] # np.int64(9)
x[-3:-1] # array([7, 8])
x[::-1] # array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
二维数组的索引和切片
【示例】索引直接获取
y = np.arange(12)
z = y.reshape(4,3)
z
'''
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
'''
# 获取第二行
z[1] # array([3, 4, 5])
# 获取第三行第二列
z[2][1] # np.int64(7)
【示例】使用坐标获取数组[x,y]
x = np.arange(1, 13)
a = x.reshape(4, 3)
print(a)
'''
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
'''
# '所有行的第二列'
print(a[:, 1]) # [ 2 5 8 11]
# '获取第三行第二列'
print(a[2, 1]) # 8
# '奇数行的第一列'
print(a[::2, 0]) # [1 7]
# '同时获取第三行第二列,第四行第一列'
print(a[(2, 3), (1, 0)]) # [ 8 10]
【示例】二维数组负索引的使用
print('获取最后一行')
print(a[-1])
print('行进行倒序')
print(a[::-1])
print('行列都倒序')
print(a[::-1,::-1])
【示例】切片数组的复制
a = np.arange(1,13).reshape(3,4)
'''
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
'''
sub_arry = a[:2,:2] # 取a的1,2行,1,2列
'''
array([[1, 2],
[5, 6]])
'''
# 改变索引位置的值
sub_arry[0][0]=10000
'''
array([[10000, 2],
[ 5, 6]])
'''
改变数组的维度
通过reshape方法可以将一维数组变成二维、三维或者多维数组,
也可以通过reshape方法将多维数组变成一维。
【示例】改变数组的维度
a = np.arange(24).reshape(4,6)
'''
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])
'''
# 退维
a.reshape(-1)
'''
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
'''
通过ravel方法或flatten方法可以将多维数组变成一维数组。改变数组的维度还可以直接设置Numpy数组的shape属性(元组类型),通过resize方法也可以改变数组的维度。
#使用ravel函数将三维的b变成一维的数组
a1=b.ravel()
#使用flatten函数将二维的c变成一维的数组
a2=c.flatten()
#使用shape属性将三维的b变成二维数组(6行4列)
b.shape=(6,4)
#使用resize修改数组的维度
b.resize((2,12))
数组的拼接
函数 | 描述 |
---|---|
concatenate | 连接沿现有轴的数组序列 |
hstack | 水平堆叠序列中的数组(列方向) |
vstack | 竖直堆叠序列中的数组(行方向) |
concatenate 函数用于沿指定轴连接相同形状的两个或多个数组,格式如下:
numpy.concatenate((a1, a2, ...), axis)
- a1, a2, …:相同类型的数组
- axis:沿着它连接数组的轴,默认为 0
【示例】列表的拼接
a=[1,2,3]
b=[4,5,6]
a.extend(b) # [1, 2, 3, 4, 5, 6]
【示例】一维数组的拼接
x=np.arange(1,4)
y=np.arange(4,7)
print(np.concatenate([x,y]))
# array([1, 2, 3, 4, 5, 6])
【示例】二维数组的拼接
a=np.array([[1,2,3],[4,5,6]])
b=np.array([[