Python——NumPy(第二讲)


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([[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值