Python之numpy数组篇(下)

目录

一、数组排序

1、概念

2、升序,最大、最小值

3、原地、横向排序

二、数组内积运算

1、概念

2、代码例子

三、访问数组元素

1、使用介绍

2、行列直接访问

3、切片

4、行列访问扩展

 四、数组对函数运算的支持

1、概念

2、例子

 五、改变数组形状

1、方法

2、shape()

3、reshape()

4、 resize()

六、数组堆叠与合并

1、堆叠

2、合并


一、数组排序

1、概念

(1)argsort()函数:返回一个数组

(2)索引:该数组中的每个元素的位置

(3)argmax()、argmin()函数:返回数组中最大最小元素下标

(4)sort():数组原地排序

2、升序,最大、最小值

import numpy as np
x = np.array([3,1,2])
np.argsort(x)    #返回升序排序后元素的原下标
x[_]
x = np.array([3,1,2,4])
x.argmax(),x.argmin()    #最大值和最小值的下标
np.argsort(x)
x[_]

3、原地、横向排序

x.sort()#原地排序
x
x = np.random.randint(1,10,(2,5))
x
x.sort(axis=1)  #横向排序,注意纵向的元素对应关系变化了
x


二、数组内积运算

1、概念

(1)对于两个等长数组x(x_{1},x_{2},x_{3},\cdot \cdot \cdot ,x_{n})y(y_{1},y_{2},y_{3},\cdot \cdot \cdot ,y_{n}),其内积为两个数组中对应位置的元素乘积之和,计算公式如下:

x\cdot y=\sum_{i=1}^{n}x_{i}y_{i}

(2)dot()函数:用来计算两个数组的内积

(3)numpy中的数组也提供了dot()方法,计算和另一个数组的内积,也可以借助于内置sum()函数计算两个数组的内积

2、代码例子

x = np.array((1,2,3))
y = np.array((4,5,6))
print(np.dot(x,y))
print(x.dot(y))
print(sum(x*y))


三、访问数组元素

1、使用介绍

可以通过下标和切片的形式来访问数组中的某个或多个元素

2、行列直接访问

b = np.array(([1,2,3],[4,5,6],[7,8,9]))
b[0]   #第0行所有元素
b[0][0]   #第0行第0列的元素
b[0,2]   #第0行第2列的元素,等价于b[0][2]的形式
b[[0,1]]   #第0行和第1行的所有元素,只指定行下标,不指定列下标,表示所有列
b[[0,2,1],[2,1,0]]   #第0行第2列、第2行第1列、第1行第0列的元素,先行后列

3、切片

a = np.arange(10)
a[::-1]  #方向切片
a[::2]   #隔一个取一个元素
a[:5]  #前5个元素

4、行列访问扩展

c = np.arange(25)   #创建数组
c.shape =5,5   #修改数组形状
c
c[0,2:5]  #行下标为0且列下标介于[2,5)之间的元素值
c[1]    #行下标为1的所有元素,不指定列下标,表示所有列
c[2:5,2:5]   #行下标和列下标都介于[2,5)之间的元素值
c[[1,3],[2,4]]   #第1行第2列元素和第3行第4列元素
c[[1,3],2:4]     #第1行,第3行的第2,3列
c[:,[2,4]]     #第2列和第4列所有元素
c[:,3]    #第3列所有元素
c[[1,3]]   #第1行第3行所有元素
c[[1,3]][:,[2,4]]    #第1,3行第2,4列所有元素


 四、数组对函数运算的支持

1、概念

numpy提供了大量用于对数组进行计算的函数,可以用于对数组中所有元素进行同样的计算返回新数组,处理速度比使用循环要快得多

2、例子

import numpy as np

x = np.arange(0,100,10,dtype=np.floating)
print(x)
print(np.sin(x))   #一维数组中所有元素的值求正弦值
x = np.array(([1,2,3],[4,5,6],[7,8,9]))
print(x)
print(np.cos(x))
print(np.round(np.cos(x)))
print(np.ceil(x/2))


 五、改变数组形状

1、方法

(1)reshape():返回新数组但不能改变数组中元素的总数量

(2)resize():对数组进行原地修改并且会根据需要进行补0或丢弃部分元素

(3)shape属性:直接原地修改数组的大小

2、shape()

import numpy as np
x = np.arange(1,11,1)
x.shape    #查看数组的形状
x.size     #数组中元素的数量
x.shape = 2,5    #改为2行5列
x
x.shape
x.shape = 5,-1    #-1表示自动计算
x

3、reshape()

x = x.reshape(2,5)
x
x = np.array(range(5))
x.reshape((1,10))    #reshape()不能修改数组元素个数,出错

4、 resize()

x.resize((1,10))     #resize()可以修改数组元素个数
x
np.resize(x,(1,3))    #使用numpy的resize()返回新数组
x   #不对原数组进行任何修改


六、数组堆叠与合并

1、堆叠

(1)堆叠数组:指沿着特定的方向把多个数组合并到一起,numpy的h

(2)水平堆叠:

import numpy as np
arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])
np.hstack((arr1,arr2))
arr3 = np.array([[1],[2],[3]])
arr4 = np.array([[4],[5],[6]])
np.hstack((arr3,arr4))

 

(3)垂直堆叠:

np.vstack((arr1,arr2))
np.vstack((arr3,arr4))

2、合并

(1)concatenate()函数也提供了类似的数组合并功能,参数axis是指定沿哪个方向或维度进行合并,默认为0,即按行合并

np.concatenate((arr1,arr2))
np.concatenate((arr3,arr4))
np.concatenate((arr3,arr4),axis=1)

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五秒法则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值