Python中Numpy的使用

float64
(2, 3)

四、使用arange生成连续元素

e = np.arange(8)      # [0,8) 右侧依旧是开区间
print(e)
f = np.arange(0,8,7)
print(g)

输出结果:
[0 1 2 3 4 5 6 7]
[0 7]

五、ndarry数组的转置和兑换



# 创建0-8组成的一维数组
g = np.arange(9)
# 将数组k升为二维的,每一个维度的长度为3
h = g.reshape((3,3))
print(g)
print(h)

# 转置数组(矩阵) --> m[x][y] == m[y][x]
print(h.T)

# 两个矩阵(二维数组)乘法
print(np.dot(h,h.T))

# 高维数组的轴对象
# 创建一个0-7元素组成的数组,数组的维度为3,每一维度的长度都为2
i = np.arange(8).reshape((2,2,2))
print(i)
# 获取到其中的6
print(i[1][1][0])

[0 1 2 3 4 5 6 7 8]
[[0 1 2]
[3 4 5]
[6 7 8]]
[[0 3 6]
[1 4 7]
[2 5 8]]
[[ 5 14 23]
[ 14 50 86]
[ 23 86 149]]
[[[0 1]
[2 3]]
[[4 5]
[6 7]]]
6
[[[0 1]
[4 5]]
[[2 3]
[6 7]]]
4
[[[0 1]
[4 5]]
[[2 3]
[6 7]]]
[[0 1 2]
[3 4 5]
[6 7 8]]
[[0 3 6]
[1 4 7]
[2 5 8]]

6、ndarry的一阶通用函数

函数功能
abs\fabs计算整数、浮点数的绝对值,对于非负数值,可以使用更块的fabs
sqrt计算各元素的平方根
square计算各元素的平方
exp计算各元素的指数(e的x次方)
log、log10、log2、log1p分别为自然对数(底数为e)、底数为10的log、底数为2的log、log(1+x)
sign计算各元素的正负号:1(正数)、0(零)、-1(负数)
ceil计算各元素的ceiling值,即大于等于该值的最小整数
floor计算各元素的floor值,即小于等于该值的最大整数
rint将各元素值四舍五入到最接近的整数,保留dtype
modf将数组的小数和整数部分以两个独立数组形式返回
isnan返回一个表示“哪些值是NaN(这不是一个数字)”的布尔型数组
isfinite isinf分别返回一个表示“哪些元素是有穷的(非inf,非NaN)”或“哪些元素是无穷的”的布尔型数组
cos、cosh、sin、sinh、tan、tanh普通型和双曲型三角函数
arccos、arccosh、arcsin、arcsinh、arctan、arctanh
logical_not计算各元素not x 的真值。相当于-arr
# 一元ufunc示例
m = np.arange(6)
print(m)
print(np.square(m))
n = np.array([-1.5,1.6,-1.7,1.8])
# modf 小数部分和整数部分分开显示
o,p = np.modf(n)
print(o,p)

# 向上最接近的整数
print(np.ceil(n))
# 向下最接近的整数
print(np.floor(n))
# 四舍五入后最接近的数
print(np.rint(n))

运行结果:
[0 1 2 3 4 5]
[ 0 1 4 9 16 25]
[-0.5 0.6 -0.7 0.8] [-1. 1. -1. 1.]
[-1. 2. -1. 2.]
[-2. 1. -2. 1.]
[-2. 2. -2. 2.]

七、ndarray的二阶通用函数

常用的二阶通用函数如下:

函数功能
add对应元素相加
subtract从第一个数组中减去第二个数组中的元素
multiply数组元素相乘
divide、floor_divide除法,或向下圆整除法(丢弃余数)
power对第一个数组中的元素A,根据第二个数组中的相应元素B,计算A的B次方
maximum、fmax元素级的最大值计算。fmax将忽略NaN
minimum、fmin元素级的最小值计算。fmin将忽略NaN
mod元素级的求模计算(除法的余数)
copysign将第二个数组中的值的符号复制给第一个数组中的值
greater、greater_equal、equal、notequeal执行元素级的比较运算,最终产生布尔型数组。相当于中缀运算符>、>=、<、<=、==、!=
logical_and、logical_or、logical_xor执行元素级的真值逻辑运算。相当于中缀运算符&、
# 示例代码
q = np.array([[2,5],[9,13]])
r = np.array([[3,4],[10,12]])
print(np.maximum(q,r))
print(np.minimum(q,r))
# 对应元素相加加
print(np.add(q,r))
# 对应元素相减
print(np.subtract(q,r))
# 对应元素相乘
print(np.multiply(q,r))
# 除 
# 结果留余数
print(np.divide(q,r))
# 结果小数部分直接舍去
print(np.floor_divide(q,r))

# 次方运算
print(np.power(q,4))

运算结果:
[[ 3 5]
[10 13]]
[[ 2 4]
[ 9 12]]
[[ 5 9]
[19 25]]
[[-1 1]
[-1 1]]
[[ 6 20]
[ 90 156]]
[[0.66666667 1.25 ]
[0.9 1.08333333]]
[[0 1]
[0 1]]
[[ 16 625]
[ 6561 28561]]

八、 numpy中where函数的用法

  1. np.where(condition,x,y) 满足条件就输出x,不满足就输出y
  2. np.where(condition) 输出满足条件的元素的坐标
# 首先介绍第一种使用方法:np.where(condition,x,y)
aa = np.arange(10)
print(np.where(aa,1,-1))# [-1 1 1 1 1 1 1 1 1 1] 0 为False所以输出的结果中第一个输出的结果为0
# aa数组中大于5的输出1,否则输出-1
print(np.where(aa>5,1,-1))
print(np.where([[True,False],[True,True]],[[1,2],[3,4]],[[9,8],[7,6]]))   # 为True 就从[[1,2],[3,4]]中选,为False就从[[9,8],[7,6]]中选


# 第二种使用方法:np.where(condition) 没有x,y,情况下,会输出满足条件的元素坐标(有多少维,坐标也同样有多少维),最需要注意结果的数据类型为元组(tuple)
a = np.array([2,8,9,10,12,14])
# 返回满足条件的索引
print(np.where(a>5))
# 再通过索引拿到元素
print(a[np.where(a>5)])

print(np.where([[0,1],[1,0]]))   # 因为是二维的,所以结果也自然是二维的了


运行结果:
[-1 1 1 1 1 1 1 1 1 1]
[-1 -1 -1 -1 -1 -1 1 1 1 1]
[[1 8]
[3 4]]
(array([1, 2, 3, 4, 5], dtype=int64),)
[ 8 9 10 12 14]
(array([0, 1], dtype=int64), array([1, 0], dtype=int64))

九、 常用的统计方法

# 注意,同一维度上的数组长度一致
x = np.array([[1,3],[2,5],[3,4]])
# 求所有元素的平均数(注意:零长度的数组mean为(n))
print(x.mean())
# 求每一行元素的平均数
print(x.mean(axis = 1))
# 求每一列元素的平均数
print(x.mean(axis = 0))
# 求和
print(x.sum())
# 求每一列元素之和
print(x.sum(axis =0))
# 求所有元素中的最大值
print(x.max())
# 求每一行的最大值
print(x.max(axis = 1))

# 求所有元素的累计和
print(x.cumsum())      # [ 1 4 6 11 14 18]
# 求所有元素的累计积
print(x.cumprod())     # [ 1 3 6 30 90 360]


# 布尔数组的常用统计方法
"""
 sum: 统计数组/某一维度中True的个数
 any: 统计数组/某一维度中是否存在一个/多个True
 all: 统计数组/数组某一维度中是否都是True
"""
x = np.array([[False,True],[False,True]])
print(x.sum()) # 2
print(x.sum(axis = 0))   # [0 2]
print(x.any(axis = 0))   # [False True]
print(x.all(axis = 1))   # [False False]

运行结果:
3.0
[2. 3.5 3.5]
[2. 4.]
18
[ 6 12]
5
[3 5 4]
[ 1 4 6 11 14 18]
[ 1 3 6 30 90 360]
2
[0 2]
[False True]
[False False]

十、 数组去重以及集合运算

方法功能
unique(m)去重后有序排列
intersect1d(m,n)计算m和n中的公共元素
union1d(m,n)计算m和n中的并集
inld(m,n)判断m中的元素是否包含于n
setdiff1d(m,n)计算集合的差集,即在m但不在n中的元素
setxorld(m,n)集合的对称差,即存在于一个数组中但不同时存在于两个数组中的元素

注意:以上所有方法返回内容的数据类型为一维数组
代码示例:

m = np.array([[1,6,5],[5,2,1],[6,3,2]])
# 元素去重
print(np.unique(m))       # [1 2 3 5 6]
n = np.array([1,6,2])
# 判断m的元素是否包含于n
print(np.in1d(m,n))       # # [ True True False False True True True False True]
# 计算差集
print(np.setdiff1d(m,n))  # [3 5]
# 获取共同元素
print(np.intersect1d(m,n))  # [1 2 6]

运行结果:
[1 2 3 5 6]
[ True True False False True True True False True]
[3 5]
[1 2 6]

十一、 numpy中的线性代数

方法功能
diag以一维数组的形式返回方阵对角线的元素
dot矩阵乘法
trace计算对角线元素的和
det计算矩阵行列式
eig计算方阵的本征值和本征向量
inv计算逆矩阵
pinv计算矩阵的Moore-Penrose 伪逆
qr计算QR分解
svd计算奇异值分解(SVD)
solve解线性方程组Ax = b ,其中A为一个方阵
lstsq计算Ax = b 的最小二乘解
import numpy.linalg as npla
m = np.array([[1,3],[3,4]])
n = np.array([[2,4],[2,1]])
# 矩阵相乘
print(m.dot(n))
print(np.dot(m,n))
# 求逆矩阵
print(npla.inv(m))
# 求行列式
print(npla.det(m))

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

aFcuWEb-1713615862337)]

[外链图片转存中…(img-ZtRp3o5t-1713615862337)]

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值