方法一: 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包是python语言包进行科学计算,尤其是数学分析,所用到的最常见、也是最重要的第三方库,也是其他数学和数学计算库的基础
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)
运行结果如下
加减乘除:是对于两个数组对应的数据进行的操作
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)
它将返回一个布尔值列表
当然,数组也可以对于普通数字进行运算,结果将作用于数组中每一个数
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:\python\lesson\122.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))