Python numpy 学习

Python numpy 学习,第1张

本文章用于系统学习python numpy

 

第三方库的导入:

方法一: 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:\python\lesson2.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))

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/919078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存