Numpy基础入门实例

  • 安装
  • 使用pip
  • 使用PyCharm
  • 入门实例
  • 基础运算
  • Array基础
  • 创建各类矩阵
  • 矩阵基本属性
  • 索引取值
  • 矩阵运算
  • Array分割
  • Array合并
  • 深拷贝与浅拷贝


安装

使用pip

# 可以换国内源(如清华镜像)提高下载速度
pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

使用PyCharm

新建一个Python项目,左上角打开Setting,寻到Project Interpreter,然后点击右侧加号

numpy 计算EMA numpy 计算实战_迭代


搜索Numpy,然后左下角点击安装,等待安好即可

numpy 计算EMA numpy 计算实战_迭代_02

入门实例

基础运算

import numpy as np

#创建两个列表
a = np.array([10,20,30,40])
b = np.arange(4)

#减法 加法
c = a - b
d = a + b
print(c)
print(d)

#乘法
e = a * b
print(e)

#平法
e = a ** 2
print(e)

#三角函数 sin cos tan...
e = 10 * np.sin(a)
print(e)

#根据表达式判断数组值  成立则为true
print(b)
print(b < 3)
print(b == 3)

#矩阵乘法 (不是直接乘)
array1 = np.array([[1,1],
                  [0,1]])
array2 = np.arange(4).reshape((2,2))

print(array1)
print(array2)

array3 = array1 * array2    #对应位置值相乘
array3_dot = np.dot(array1,array2)   #矩阵乘法
#array3_dot = array1.dot(array2)  效果相同

print(array3)
print(array3_dot)

#随机生成矩阵 用函数求值
rans = np.random.random((2,4)) #随机生成范围在0到1的2行4列矩阵
print(rans)

ran = np.arange(8).reshape((2,4))
print(ran)
print(np.sum(ran)) #所有值总和
print(np.sum(ran,axis=0)) #每一列总和
print(np.sum(ran,axis=1)) #每一行总和

print(np.min(ran)) #所有值中的最小值
print(np.min(ran,axis=0)) #每一列中的最小值
print(np.min(ran,axis=1)) #每一行中的最小值

print(np.max(ran)) #所有值中的最大值
print(np.max(ran,axis=0)) #每一列中的最大值
print(np.max(ran,axis=1)) #每一行中的最大值

print(np.mean(ran)) #所有值的平均值
print(np.mean(ran,axis=0)) #每一列的平均值
print(np.mean(ran,axis=1)) #每一行的平均值

Array基础

创建各类矩阵

import numpy as np

#创建一维矩阵
a = np.array([2,1,3])
print(a)    #输出类似无逗号列表

#添加类型  int float等
b = np.array([2,1,3],dtype=np.int)
print(b.dtype)

#定义二维矩阵
array = np.array([[1,2,3],
                 [1,2,3]])
print(array)

#定义全零矩阵
arrayzeros = np.zeros((3,4),dtype=int)
# print(arrayzeros.dtype)
print(arrayzeros)

#定义全1矩阵
arrayones = np.ones((3,4),dtype=int)
print(arrayones)

#定义空矩阵(值接近为0)
arrayempty = np.empty((3,4))
print(arrayempty)

#生成有序array
##默认步长为1  左闭右开
arangedemo1 = np.arange(10,20,2)
print(arangedemo1)
##二维
arangedemo2 = np.arange(12).reshape((3,4))
print(arangedemo2)
##等差数列
arangedemo3 = np.linspace(1,10,5)
print(arangedemo3)
arangedemo3 = np.linspace(1,10,6).reshape((2,3))
print(arangedemo3)

矩阵基本属性

import numpy as np

#创建
array = np.array([[1,2,3],
    [1,2,3]])
#打印矩阵
print(array)
#打印维度
print(array.ndim)
#打印几行几列
print(array.shape)
#打印矩阵元素数量
print(array.size)

索引取值

import numpy as np

#单行索引
A = np.arange(3,15)
print(A)
print(A[3])

#矩阵索引
B = np.arange(3,15).reshape((3,4))
print(B)
print(B[1][1])
print(B[1,1])   #同上

#冒号可以代替范围
print(B[1,:])
print(B[:,0])
print(B[1,1:3])

#for循环迭代每一行 和 每一列
for row in B:
    print(row)

for column in B.T:
    print(column)

#迭代每一个内容
print(B.flatten())   #将矩阵得到一个展开的数组

for item in A.flat:
    print(item)

矩阵运算

import numpy as np

A = np.arange(2,14).reshape((3,4))
print(A)
#最小值最大值的索引
print(np.argmax(A))
print(np.argmin(A))

#平均值
print(A.mean())
print(np.average(A))
print(np.mean(A))

#逐步累加
print(np.cumsum(A))

#逐步累差
print(np.diff(A))

#找出非0的数 输出为对应的行 列索引表
print(np.nonzero(A))

#排序  对每一行进行排序
B = np.arange(14,2,-1).reshape((3,4))
print(np.sort(B))

#矩阵转置
print(np.transpose(A))
print(A.T)

#替换
#如下:使所有小于5的变为5 使所有大于9的变为9
print(np.clip(A,5,9))   #注意其余数保持不变

Array分割

import numpy as np

A = np.arange(12).reshape((3,4))
print(A)

#平分成2块 按列
print(np.split(A,2,axis=1))

#分成3块 按行
print(np.split(A,3,axis=0))

#不等分割
print(np.array_split(A,3,axis=1))

#另一种方法
print(np.vsplit(A,3))   #按行
print(np.hsplit(A,2))    #按列

Array合并

import numpy as np

A = np.array([1,1,1])
B = np.array([2,2,2])

#上下合并
print(np.vstack((A,B)))

#左右合并
print(np.hstack((A,B)))

#将A转置  (这里注意不能用矩阵的T方法转置一维Array)
print(A[:,np.newaxis])
print(np.hstack((A[:,np.newaxis],B[:,np.newaxis])))

#后面参数为0可以左右合并  参数1可以纵向合并
C =  np.concatenate((A,B,B,A),axis=0)
print(C)

深拷贝与浅拷贝

import numpy as np

a = np.array([1,2,3,4])
#简单赋值
b = a

#a发生改变时候,b也发生改变  同样 改变b a也变(浅copy)
a[0] = 0
print(a)
print(b)
print(b is a)   #如果是true说明指向相同

#要使赋值不关联之前变量  需要使用深copy方法
c = a.copy()
print(c)
c[0] = 1
print(c is a)
print(c)