文章目录
一、Numpy简介
- Numpy是Python语言的一个library numpy
- Numpy主要支持矩阵操作和运算
- 现在比较流行的机器学习框架(例如Tensorflow/PyTorch等等),语法都与Numpy比较接近
二、numpy创建数组
1.dtype定义格式
import numpy as np
a=np.array([2,3,4],dtype=np.int64)
print(a.dtype)
>>>
int64
2.定义矩阵
- array函数
a=np.array([2,3,4],
[2,3,4])
- zero函数
a=np.zero((3,4)) #三行四列零矩阵
- ones函数
a=np.ones() #所有元素都是1的矩阵
- arange函数
a=np.arange(10,20,2) #以10起始,到20终止(不包括20),以2为步长的数组
>>>
[10 12 14 16 18]
- reshape函数
a=np.arange(12).reshape((3,4)) #一行十二列,重置格式为三行四列
- linspace函数:
linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
作用为:在指定的大间隔内,返回固定间隔的数据。他将返回“num”个等间距的样本,在区间[start, stop]中。其中,区间的结束端点可以被排除在外。
a=np.linspace(1,10,4)
>>>
[ 1. 4. 7. 10.]
三、numpy属性
1.创建一个数组
import numpy as np
array=np.array([[1,2,3],[2,3,4]])
print(array)
>>>
[[1 2 3]
[2 3 4]]
2.查看数组维度
ndim返回的是数组的维度,返回的只有一个数,该数即表示数组的维度。
print('number of dim:',array.ndim)
>>>
number of dim: 2
3.查看数组类型
print('shape:',array.shape)
>>>
shape: (2, 3)
4.查看数组元素个数
print('size:',array.size)
>>>
size: 6
四、numpy基础运算
1.数组的加减幂乘
1.1 加减幂
- 加减
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
print(a)
print(b)
c = a + b
d= a-b
# c = b ** 2 # b的平方
print(c)
print(d)
对应位置相加减
[10 20 30 40]
[0 1 2 3]
[10 21 32 43]
[10 19 28 37]
- 幂和三角函数
e=b**2 #b数组的每一个元素求平方
f=10*np.sin(a) #a数组每一个元素的sin函数
>>>
[0 1 4 9]
[-5.44021111 9.12945251 -9.88031624 7.4511316 ]
1.2 乘法
- 对应想乘:
c=a*b
print(c)
>>>
[ 0 20 60 120]
- 矩阵的乘法:两种表达方式结果一样
(1)c_dot=np.dot(a,b)
a=np.array([[2,4],[2,4]])
print(a)
b=np.array([[2,2],[2,2]])
c_dot=np.dot(a,b)
print(c_dot)
>>>
[[2 4]
[2 4]]
[[12 12]
[12 12]]
(2)c_dot=a.dot(b)
c_dot=a.dot(b)
print(c)
>>>
[[12 12]
[12 12]]
2.统计数学运算
a=np.array([[2,4],[2,4]])
np.sum(a) #所有数字的和
np.min(a) #找到最小值
np.max(a) #找到最大值
np.mean(a,axis=0)#对于列进行计算平均值
>>>
12
2
4
[2. 4.]
a=np.array([[4,2],[3,4]])
print(np.median(a,axis=0)) #对于列取中位数
>>>
[3.5 3. ]
- 按行、列求和
a=np.array([[2,4],[2,4]])
np.sum(a,axis=1)#行求和,axis=0是列
>>>
[6 6]
3.其他基础运算
3.1 arg***函数
numpy.argmin(a,axis=None,out=None)[source]
给出axis方向最小值的下标
- 参数:
a
:Input array.
axis
:默认将输入数组展平。否则,按照axis方向
out
:可选 - 返回值
index_array:下标组成的数组。shape与输入数组a去掉axis的维度相同。
注:多个最小值,只显示第一个
试验:
import numpy as np
a=np.array([[4,2],
[0,4]])
print(np.argmin(a)) #对于列进行计算平均值
>>>
2
铺平之后‘0’所在位置就是2
除了argmin还有argmax/argmean/argmedian
3.2 cumsum函数
- 定义:
cumsum(a, axis=None, dtype=None, out=None)
a.cumsum(axis=None, dtype=None, out=None)
- 返回:沿着指定轴的元素累加和所组成的数组,若不指定方向,返回一维数组
- 参数:
a
:数组axis:轴索引,整型,若a为n维数组,则axis的取值范围为[0,n-1]
dtype
:返回结果的数据类型,若不指定,则默认与a一致。
out
:数据类型为数组。用来放置结果的替代输出数组,它必须具有与输出结果具有相同的形状和缓冲长度代码示例:
试验
import numpy as np
arr=np.array([[1,2,3],[4,5,6],[7,8,9]])
#沿着axis=0轴计算
result1=arr.cumsum(0)
print(result1)
>>>
[[ 1 2 3]
[ 5 7 9]
[12 15 18]]
3.3 diff函数
- 定义
numpy.diff(a, n=1,axis=-1)
沿着指定轴计算第N维的离散差值 ,就是n位元素
和n+1位元素
的差
- 参数:
a
:输入矩阵
n
:可选,代表要执行几次差值,默认一次
axis
:默认是最后一个
试验
import numpy as np
a= np.arange(0,12).reshape((3,4))
result=np.diff(a)
print(result)
>>>
[[1 1 1]
[1 1 1]
[1 1 1]]
3.4 nonzero函数
返回的是数组中,非零元素的位置
。如果是二维数组就是描述非零元素在几行几列,三维数组则是描述非零元素在第几组中的第几行第几列。
试验
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 0], [6, 0, 7]])
result=np.nonzero(a)
print(result)
>>>
(array([0, 0, 0, 1, 1, 2, 2], dtype=int64), array([0, 1, 2, 0, 1, 0, 2], dtype=int64))
第一个array描述行,第二个array描述列,我们把结果转变下以便理解:
array([0, 0, 0, 1, 1, 2, 2]
array([0, 1, 2, 0, 1, 0, 2]
非零元素位置:(0,0)(0,1)(0,2)…
3.5 转置:T、transpose函数
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 0], [6, 0, 7]])
result1=a.T
result2=np.transpose(a)
print(result1)
print(result2)
>>>
[[1 4 6]
[2 5 0]
[3 0 7]]
[[1 4 6]
[2 5 0]
[3 0 7]]
3.6 sort函数
numpy.sort() 函数返回输入数组的排序副本。
- 格式
numpy.sort(a, axis, kind, order)
- 参数
a
: 要排序的数组
axis
: 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序,axis
=0 按列排序,axis=1 按行排序
kind
: 默认为’quicksort’(快速排序)
order
: 如果数组包含字段,则是要排序的字段
试验
import numpy as np
a = np.array([[8, 2, 3], [4, 5, 2], [6, 9, 7]])
print (np.sort(a))
print (np.sort(a,axis=0))
>>>
[[2 3 8]
[2 4 5]
[6 7 9]]
[[4 2 2]
[6 5 3]
[8 9 7]]