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[_]

Python之numpy数组篇(下)_第1张图片

3、原地、横向排序

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

Python之numpy数组篇(下)_第2张图片


二、数组内积运算

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))

Python之numpy数组篇(下)_第3张图片


三、访问数组元素

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列的元素,先行后列

Python之numpy数组篇(下)_第4张图片

3、切片

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

Python之numpy数组篇(下)_第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列所有元素

Python之numpy数组篇(下)_第6张图片Python之numpy数组篇(下)_第7张图片


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

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))

Python之numpy数组篇(下)_第8张图片


 五、改变数组形状

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

Python之numpy数组篇(下)_第9张图片

3、reshape()

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

Python之numpy数组篇(下)_第10张图片

4、 resize()

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

Python之numpy数组篇(下)_第11张图片


六、数组堆叠与合并

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))

Python之numpy数组篇(下)_第12张图片

 

(3)垂直堆叠:

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

Python之numpy数组篇(下)_第13张图片

2、合并

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

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

Python之numpy数组篇(下)_第14张图片

你可能感兴趣的:(Python,numpy,python)