python-numpy库的常用操作

注: 注释是重点!(粘贴运行一下)

numpy简介

Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
其为第三方库numpy官网

存取数据savetxt, loadtxt

savetxt : 保存数据。loadtxt : 读取数据。

示例代码+详细注释

import numpy as np
a = np.arange(60).reshape(20, 3)  # arange创建一个一维数组,reshape,将其转化为20行3列的数组
print(a)
# 1: 要保存的文件名,要保存的数组,保存的数据格式,分隔符(大多都是从csv中读取数据)
np.savetxt("c.csv", a, fmt="%.2lf", delimiter=",")  # 保存数据

# unpack 用多个变量取数据,x,y,z对应三列
x, y, z = np.loadtxt("c.csv", delimiter=",", unpack=True)  # 取数据
print(x)
print(y)
print(z)

对ndarry的创建,变换,切割和运算操作

创建和变换

import numpy as np
# (创建ndarry数组)(dtype: 数据类型,另有float64, int32,int64,string_,bool...)
x = np.array([1, 2, 3, 4, 5, 6, 7, 8], dtype=np.float32)
print("1:", x)
y = np.array((1, 2, 3, 45, 6, 7, 8))
print("2:", y)
a = np.arange(24)  # 创建一个一维数组
print("3:", a)
b = np.ones((2, 3, 4))  # 创建一个各项都为1的三维数组(2:两个二维数组,3:每个二维数组为三行,4:每个二维数组为四列)
print("4:", b)
c = np.zeros((3, 6), dtype=np.float32)  # 创建一个各项都为0.的,二维数组(三行六列)
print("5:", c)
d = np.eye(5)  # 形成正方形矩阵(对角线为1)
print("6:", d)
e = np.ones_like(a)  # like(a):创建与a数组类型一样的数组
print("7:", e)
f = np.zeros_like(b)
print("8:", f)
g = np.full_like(a, 23)  # 更改了其中的元素(全改成了23)
print("9:", g)
h = np.linspace(1, 10, 4)  # 步距为4
print("10:", h)  # np.concatenate()  将两个或多个数组合并成一个新的数组
i = np.linspace(1, 10, 4, endpoint=False)  # endpoint:是否包括末数字
print("11:", i)
j = x.reshape(2, 4)  # 需要保证元素的总个数不变(与原数组总个数相同){a = np.arange(6).reshape(2,3)}
print("12:", j)  # 不改变x数组的值
print(x)  # 如x.resize(shape)则改变了x数组的值
# x.swapaxes(1,2)将数组n个维度中两个维度进行调换
k = c.flatten()  # 对原数组进行降维(直接降到一维),不改变之前的数组
print("13:", k)
l = x.astype(np.float)   # 改变数据类型(np.int)也行
print("14:", l)
m = b.tolist()  # (转换成列表)
print(m)

切割操作

n = np.array([9, 8, 7, 6, 5])  # 一维
print("15:", n[2])
print(n[1:4:2])
o = np.arange(24).reshape((2, 3, 4))
print(o)
print("16:", o[1, 2, 3])
print(o[0, 1, 2])
print(o[-1, -2, -3])  # (注意用逗号分隔)
print("17:", o[:, 1, -3])
print("18:", o[:, 1:3, :])
print("19:", o[:, :, ::2])

运算操作

o = np.arange(24).reshape((2, 3, 4))
print(o)
print("20:", o.mean())  # 求各个元素的平均数
print(o/o.mean())
'''
np.abs(o)  np.fab(o)                     计算各元素的绝对值
np.sqrt(o)                               平方根
np.square(o)                             平方
np.log(o)  np.log2(o)  np.log10(o)       对数
np.cell(o)  np.floor
np.rint(o)                               四舍五入
np.modf(o)                               以整数和小数两个路径返回
                                         三角函数
np.exp(o)                                指数
np.sign(o)                               计算各元素的符号值
+ - * / **                                 2323
                                         最大最小值的运算
np.copysign(x,y)                         将数组y中各元素值的符号赋值给数组x对应元素
> < >= <= == !=                          算数比较产生布尔型数组                                            
'''

numpy-函数

随机函数

import numpy as np
a = np.random.rand(3, 4, 5)  # 随机浮点数[0,1)
print("1:", a)
b = np.random.randn(3, 4, 5)  # 标准正态分布数据
print("2:", b)
c = np.random.randint(100, 200, (3, 4))  # 100,200为数据范围,(3,4)为二维数组
print("3:", c)
np.random.seed(100)
# 提供随机数种子,seed( ) 用于指定随机数生成时所用算法开始的整数值。 
# 1.如果使用相同的seed( )值,则每次生成的随即数都相同; 
# 2.如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。 
# 3.设置的seed()值仅一次有效
d = np.random.randint(100, 200, (3, 4))
print("4:", d)
print(".............................................................")
e = np.random.randint(100, 200, (3, 4))
print("5:", e)
f = np.random.shuffle(e)  # 用于将一个列表中的元素打乱
print("6:", f)
print("7:", e)
g = np.random.permutation(e)  # 根据e的第一轴产生新的,不改变e
print("8:", g)
h = np.random.randint(100, 200, (8,))
print("9:", h)
i = np.random.choice(h, (3, 2))  # 选取h中的元素,组成(3,2)的数组
print("10", i)
j = np.random.choice(h, (3, 2), replace=False)  # 是否各元素重复
print("11", j)
k = np.random.uniform(0, 10, (3, 5))  # 产生具有均匀分布的数组
print("12", k)
l = np.random.normal(10, 5, (3, 4))  # 产生具有正态分布的数组,10为均值,5为标准差
print("13:", l)

统计函数

import numpy as np
a = np.arange(15).reshape(3, 5)
print("1:", a)
b = np.sum(a)
print("2:", b)
c = np.mean(a, axis=1)
print("3:", c)
d = np.mean(a, axis=0)  # axis是1为行,0为各列求
print("4:", d)
e = np.average(a, axis=0, weights=[10, 5, 1])  # 加权平均
print(e)
# np.std(a,axis=None) 标准差
# np.var(a,axis=None) 方差

print("'''''''''''''''''''''''''''''''''''''''''''''''")
f = np.arange(15, 0, -1).reshape(3, 5)
print("5:", f)
# np.max(f)      np.min(f)      元组中元素的最大最小值
g = np.argmax(f)  # 最大值降成一维后的下标         argmin(最小值的)
print("6:", g)
h = np.unravel_index(np.argmin(f), f.shape)  # 转换成多维下标
print("7:", h)
# np.ptp(f)    最大值与最小值的差
# np.median(f) 计算数组f中元素的中位数

梯度函数-gradient

import numpy as np
a = np.random.randint(0, 20, (5,))
print("1:", a)
b = np.gradient(a)
print("2:", b)
# [a, b, c, d, e]
# 计算方式.第一个: 第一位 = (b - a) / 1
# 第二个: (c - a) / 2
# 中间的 : (d - b) / 2
# 第四个: (e - c) / 2 
# 最后一个:(e - d) / 1
c = np.random.randint(0, 50, (3, 5))
print("3:", c)
d = np.gradient(c)
print("4:", d)  # 得两个数组,第一个数组为最外层维度的梯度值,第二个数组表示第二层维度的梯度值
'''
[array([[-11. , -34. ,  35. ,  12. , -19. ],
       [  4.5,  -4. ,  -1. ,  -0.5,  -6.5],最外层维度的梯度
       [ 20. ,  26. , -37. , -13. ,   6. ]]),
array([[ 26. ,  -1. , -16. ,   7.5,  19. ],
       [  3. ,  22. ,   7. , -19.5, -12. ],第二层维度的梯度
       [  9. ,  -6.5, -12.5,   2. ,   7. ]])]
       '''

numpy的矩阵库-matlib

import numpy as np
import numpy.matlib
a = np.matlib.empty((2, 2))  # 返回一个新的矩阵
print("1.", a)
b = np.matlib.zeros((2, 2))  # 创建一个元素均为0的矩阵
print("2.", b)
c = np.matlib.ones((2, 2))  # 创建一个元素均为1的矩阵
print("3.", c)
d = np.matlib.eye(3, 4, dtype=int)  # 创建一个对角线为1的矩阵
print("4.", d)
e = np.matlib.rand(3, 3)  # 创建一个矩阵,数据随机填充
print("5.", e)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值