在Python编程中用于科学计算,Numpy是一个Python库/模块
Numpy模块提供一个ndarray对象,我们可以用这个对象来对任意维度的数组执行操作。ndarray代表N维数组,其中N是任意数字。这意味着Numpy数组可以是任意维度的数组。
1.强大的N维数组对象Array;
2.成熟的函数库;
3.实用的线性代数、傅里叶变换和随机数生成函数。
目录
numpy下载与安装
Anaconda安装完毕后,输入condalist查看都有哪些库,因为一般初次安装的包都比较老,为避免报错,更新所有的包condaupdate–all。Anaconda一般自带numpy等一些库,直接可以拿来使用。
Numpy使用
-
创建数组
import numpy as np
a=np.array([2,23,4],dtype=np.int)
print(a.dtype)#dtype表示数据类型
print(a)
int32
[ 2 23 4]
二维数组
import numpy as np
a=np.array([[2,23,4],[2,32,4]])
print(a)
[[ 2 23 4]
[ 2 32 4]]
数组间加减都是对应计算
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)#0,1,2,3
print(a,b)
c=a-b
print(c)
[10 20 30 40] [0 1 2 3]
[10 19 28 37]
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)#0,1,2,3
print(a,b)
c=b**2#b的平方
print(c)
[10 20 30 40] [0 1 2 3]
[0 1 4 9]
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)#0,1,2,3
c=10*np.sin(a)
d=10*np.cos(a)
print(c)
print(d)
[-5.44021111 9.12945251 -9.88031624 7.4511316 ]
[-8.39071529 4.08082062 1.5425145 -6.66938062]
逻辑判断
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)#0,1,2,3
print(b)
print(b<3)#数组中小于3就True 反之False
[0 1 2 3]
[ True True True False]
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)#0,1,2,3
print(b)
print(b==3)#数组中等于3就True 反之False
[0 1 2 3]
[False False False True]
reshape 定义多行列矩阵
import numpy as np
a=np.array([[1,1],[0,1]])
b=np.arange(4).reshape((2,2))# reshape 定义二行二列矩阵
print(a)
print(b)
[[1 1]
[0 1]]
[[0 1]
[2 3]]
矩阵相乘 dot()方法
import numpy as np
a=np.array([[1,1],[0,1]])
b=np.arange(4).reshape((2,2))# reshape 定义二行二列矩阵
c=a*b#逐个相乘
c_dot=np.dot(a,b)#矩阵相乘 行 * 列
c_dot2=a.dot(b)#与上行一样
print(a)
print(b)
print(c)
print(c_dot)
print(c_dot2)
[[1 1]
[0 1]]
[[0 1]
[2 3]]
[[0 1]
[0 3]]
[[2 4]
[2 3]]
[[2 4]
[2 3]]
最大最小和
import numpy as np
a=np.random.random((2,4))
print(a)
print(np.sum(a))
print(np.min(a))
print(np.max(a))
[[0.01148256 0.89207744 0.47739733 0.02236821]
[0.1514486 0.60197205 0.09927852 0.761249 ]]
3.0172737106277885
0.011482556279377998
0.8920774400156976
axis代表维度 0代表列 1代表行
import numpy as np
a=np.random.random((2,4))
print(a)
print(np.sum(a,axis=1))#axis代表维度 0代表列 1代表行
print(np.min(a,axis=0))
print(np.max(a,axis=1))
[[0.88854865 0.01832797 0.00808952 0.21917744]
[0.22957855 0.24251115 0.78180795 0.53827674]]
[1.13414359 1.79217439]
[0.22957855 0.01832797 0.00808952 0.21917744]
[0.88854865 0.78180795]
基础计算
#numpy 基础计算
import numpy as np
a=np.arange(2,14).reshape((3,4))
print(a)
print(np.argmin(a))#最小值索引
print(np.argmax(a))#最大值索引
print(np.mean(a))#平均值
print(np.average(a))#平均值
print(np.median(a))#中位数
print(np.cumsum(a))#累加
print(np.diff(a))#累差
print(np.nonzero(a))#找出非0的数
print(np.sort(a))#逐行排序,默认升序
[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
0
11
7.5
7.5
7.5
[ 2 5 9 14 20 27 35 44 54 65 77 90]
[[1 1 1]
[1 1 1]
[1 1 1]]
(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
numpy 按下标取值
#numpy 基础计算
import numpy as np
a=np.arange(3,15).reshape((3,4))
print(a)
print(a[2][1])
print(a[2,1])
[[ 3 4 5 6]
[ 7 8 9 10]
[11 12 13 14]]
12
12
[ 4 8 12]
[8 9]
合并
#numpy 基础计算
import numpy as np
a=np.array([1,1,1])
b=np.array([2,2,2])
c=np.vstack((a,b))#上下合并
d=np.hstack((a,b))#左右合并
print(c)
print(d)
print(a.shape,c.shape,d.shape)
[[1 1 1]
[2 2 2]]
[1 1 1 2 2 2]
(3,) (2, 3) (6,)
#numpy 基础计算
import numpy as np
a=np.array([1,1,1])
b=np.array([2,2,2])
c=np.vstack((a,b))#上下合并
d=np.hstack((a,b))#左右合并
print(d)
print(a.shape,d.shape)
print(a[:,np.newaxis])#改变维度 纵向
print(a[np.newaxis:,])#改变维度 横向
[1 1 1 2 2 2]
(3,) (6,)
[[1]
[1]
[1]]
[1 1 1]
分割
注意 这个纵向分割的意思是纵向的垂直轴方向,意思就是按行分割的。横向分割就是横向的垂直轴方向么 按列分割
#numpy 分割
import numpy as np
a=np.arange(12).reshape((3,4))
print(a)
print(np.array_split(a,3,axis=1))
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]
#numpy 分割
import numpy as np
a=np.arange(12).reshape((3,4))
print(a)
print(np.vsplit(a,3))#纵向分割
print(np.hsplit(a,2))#横向分割
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]