目录
一、数组排序
1、概念
2、升序,最大、最小值
3、原地、横向排序
二、数组内积运算
1、概念
2、代码例子
三、访问数组元素
1、使用介绍
2、行列直接访问
3、切片
4、行列访问扩展
四、数组对函数运算的支持
1、概念
2、例子
五、改变数组形状
1、方法
2、shape()
3、reshape()
4、 resize()
六、数组堆叠与合并
1、堆叠
2、合并
(1)argsort()函数:返回一个数组
(2)索引:该数组中的每个元素的位置
(3)argmax()、argmin()函数:返回数组中最大、最小元素的下标
(4)sort():数组原地排序
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[_]
x.sort()#原地排序
x
x = np.random.randint(1,10,(2,5))
x
x.sort(axis=1) #横向排序,注意纵向的元素对应关系变化了
x
(1)对于两个等长数组和,其内积为两个数组中对应位置的元素乘积之和,计算公式如下:
(2)dot()函数:用来计算两个数组的内积
(3)numpy中的数组也提供了dot()方法,计算和另一个数组的内积,也可以借助于内置sum()函数计算两个数组的内积
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))
可以通过下标和切片的形式来访问数组中的某个或多个元素
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列的元素,先行后列
a = np.arange(10)
a[::-1] #方向切片
a[::2] #隔一个取一个元素
a[:5] #前5个元素
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列所有元素
numpy提供了大量用于对数组进行计算的函数,可以用于对数组中所有元素进行同样的计算返回新数组,处理速度比使用循环要快得多
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)reshape():返回新数组但不能改变数组中元素的总数量
(2)resize():对数组进行原地修改并且会根据需要进行补0或丢弃部分元素
(3)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
x = x.reshape(2,5)
x
x = np.array(range(5))
x.reshape((1,10)) #reshape()不能修改数组元素个数,出错
x.resize((1,10)) #resize()可以修改数组元素个数
x
np.resize(x,(1,3)) #使用numpy的resize()返回新数组
x #不对原数组进行任何修改
(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))
(1)concatenate()函数也提供了类似的数组合并功能,参数axis是指定沿哪个方向或维度进行合并,默认为0,即按行合并
np.concatenate((arr1,arr2))
np.concatenate((arr3,arr4))
np.concatenate((arr3,arr4),axis=1)