第三方库的导入:
方法一: cmd界面 pip install numpy (from 镜像源)
镜像源:
1.清华:https://pypi.tuna.tsinghua.edu.cn/simple
2.阿里云:http://mirrors.aliyun.com/pypi/simple/
3.中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
4.华中理工大学:http://pypi.hustunique.com/
国内镜像源较直接从python官网下载(及不加from 镜像源)速度较快
演示如下
方法二,pycharm=》File=》setting=》Projec=》Python interpreter=》点击上面的加号进行添加下载包
numpy库学习
numpy包是python语言包进行科学计算,尤其是数学分析,所用到的最常见、也是最重要的第三方库,也是其他数学和数学计算库的基础
numpy核心对象:ndarray
numpy提供了一种重要的数据结构——n维数组
n维数组的基本概念:
import numpy as np Array1 = np.array([1,2,3])#创建一维数组 Array2 = np.array([[1,2,3],[4,5,6]])#创建二维数组 type(Array1) #返回numpy.ndarray print(Array1.ndim) print(Array1.shape) print(Array1.size) print(Array1.dtype) # 注定义时也可以指定dtype类型 Array3 = np.array([1,2,3],[4,5,6],dype=np.int64) print(Array1.itemsize)创建数组的常用方法
import numpy as np # arange函数 Array1 = np.arange(10.0) print(Array1) # 和python内置函数不同,它支持float型 # linspace函数 Array2 = np.linspace(1, 10, 4) print(Array2) # linspce(start,end,num=50,endpoint=True,retstep=False,dtype=None) # ones函数 Array3 = np.ones(5) # 创建5个元素全为1的一维数组 print(Array3) Array3 = np.ones((2, 3)) # 创建一个2行3列元素全为1的二维数组 print(Array3) # zeros函数 Array4 = np.zeros((2, 3)) # zeros(shape,dtype=float)创建全为0的数组 # full函数 Array5 = np.full((3, 4), 5) print(Array5) # eye函数 Array6 = np.eye(3, dtype=float) # 创建一个单位数组及主对角线上全为1其他全为0 print(Array6) # random.rand函数 Array6 = np.random.rand(3,4) #创建一个3行4列的随机数列,随机性在于其元素为0-1的随机小数 print(Array6)
运行结果如下
numpy库中的基本操作加减乘除:是对于两个数组对应的数据进行的操作
import numpy as np test1 = np.array([1,2,3,4]) test2 = np.array([2,3,4,5]) print(test1+test2) print(test1*test2) print(test1-test2) print(test1/test2)
运行结果如下:
注意:两个数组一定要是同样长度否则报错如下
ValueError: operands could not be broadcast together with shapes (5,) (4,) #作者用的是5元素和4个元素的数组相加
注意这里的同样长,而不同维的数组也可以进行加减乘除,运算要满足所谓形状兼容
import numpy as np test1 = np.array([1,2,3,4]) test2 = np.array([[2,3,4,5],[1,2,3,4]]) print(test1+test2) print(test1*test2) print(test1-test2) print(test1/test2)
实验结果如下:
也可以用于对数组里面每一个数进行关系式判断
import numpy as np test1 = np.array([1,2,3,4]) test2 = np.array([2,3,4,5]) print(test1+test2>3)
它将返回一个布尔值列表
当然,数组也可以对于普通数字进行运算,结果将作用于数组中每一个数
ndarry的形态变换操作import numpy as np # reshape函数 Array1 = np.arange(12) A = Array1.reshape((2, 6)) print(A) A = Array1.reshape((2, 3, 2)) print(A) # 注reshape函数不能超过对象数组的规模 # 报错ValueError: cannot reshape array of size 12 into shape (2,10) """ 另外还有 transpose()函数将原数组按轴转置 flatten()函数将多位数组展平成一个一维数组 """一些简单的统计方法
import numpy as np Array = np.arange(6).reshape((2, 3)) print(Array.sum()) print(Array.sum(axis=0)) # 按列求和 print(Array.sum(axis=1)) # 按行求和 print(Array.max()) # 求最大值 print(Array.min()) # 求最小值 print(Array.cumsum(axis=0)) # 按列求当前位置前面所有行所对应相同列的元素和 print(Array.cumsum(axis=1)) # 按行求当前位置前面所有列所对应相同列的元素和线性代数一些应用
import numpy as np # linalg.det()计算行列式 A = np.arange(9).reshape(3, 3) print(np.linalg.det(A)) # linalg.solve()多元一次方程组求根 # 鸡兔同笼 heads 35,feet 94 A = np.array([[2, 4], [1, 1]]) # 对于2X+4Y与X+Y b = np.array([94,35]) print(np.linalg.solve(A,b))数组文件的输入输出
输入:
import numpy as np # np.savetxt(fname,X,fmt="%.18e",delimiter=",") """ fname为文件名 X为数组维数 fmt为字符串格式 delimiter为分隔符 """ data = np.arange(12).reshape(3, 4) np.savetxt(r"E:pythonlesson122.txt", data) np.savetxt(r"data_txt.txt", data, fmt="%d") np.savetxt(r"data_txt1.csv", data, fmt="%d")#也可以是兼容度更高的csv文件
输出:
import numpy as np
data = np.arange(12).reshape(3, 4)
np.savetxt(r"data_txt.txt", data, fmt="%d")
np.savetxt(r"data_txt1.csv", data, fmt="%d")
data_load = np.loadtxt("data_txt.txt")
data.tofile("data_tofile1.dat", format="%d") # 二进制文件保存data数组
data_from = np.fromfile("data_tofile1.dat", dtype=int) # 用np.int会进行警告
print(data)
print(data_from)# 这里返回的是一个一维数组如果要获取原有的数据结构就要用reshape函数
print(data_from.reshape(3,4))



