深度学习入门 之 Numpy学习笔记(二)

接上

在前面我们已经学习过数组的部分计算方法了。接下来主要是体验一下Numpy的强大功能~

目录

一、 Numpy其他常用计算方法

2 求索引

3 求平均值

4 求中位数

5 矩阵转置

6 数组迭代

6.1 行迭代

6.2 列迭代

6.3 迭代元素

7 array合并

7.1 按行合并

7.2 按列合并 

8 array分割

8.1 等份分割

8.2 不等份分割

9 array赋值

9.1 关联赋值

9.2 非关联赋值 

10 其他


一、 Numpy其他常用计算方法

t1 = np.arange(24).reshape((4, 6))
t2 = np.arange(2, 26).reshape((6, 4))
t3 = np.dot(t1, t2)
print (t1)
print (t2)
print (t3)
print (t1.dot(t2))
np.dot(t1, t2)  t1.dot(t2)
两种方式效果一样,输出的结果和矩阵的乘法运算方式也一模一样。 

2 求索引

主要有求指定元素的索引,以及根据索引找取元素。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_20,color_FFFFFF,t_70,g_se,x_16

3 求平均值

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_20,color_FFFFFF,t_70,g_se,x_16

为了方便记忆,可以理解为axis=0表示沿着横向画一条线,横线上的点是列求平均值;每一行都要参与运算。axis=1表示沿着列画一条竖线,竖线上的每一个值表示行求平均值。每一列都要参与运算。此外,t1.mean()np.average(t1)也能达到一样的效果。 

4 求中位数

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_20,color_FFFFFF,t_70,g_se,x_16

5 矩阵转置

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_20,color_FFFFFF,t_70,g_se,x_16

也可以使用np.transpose()方法实现。 

6 数组迭代

t1是4行6列形状的数组

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_8,color_FFFFFF,t_70,g_se,x_16

6.1 行迭代

# 行迭代  逐行输出
for row in t1:
    print (row)

按行迭代输出结果为: 

b057c0650ada4b3b9e0918a9d027c455.png

6.2 列迭代

# 列迭代 逐列输出 借助转置
for column in t1.T:
    print (column)

按列迭代输出结果为:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_4,color_FFFFFF,t_70,g_se,x_16  

6.3 迭代元素

# 逐个元素输出  先展平
for item in t1.flat:
    print (item)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_12,color_FFFFFF,t_70,g_se,x_16

7 array合并

7.1 按行合并

np.vstack()和np.concatenate((),axis=0)两种方式:

t1 = np.arange(4).reshape((2, 2))
t2 = np.arange(4, 8).reshape((2, 2))
print (t1)
print (t2)
print (np.vstack((t1, t2)))
print (np.concatenate((t1, t2), axis=0))

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_20,color_FFFFFF,t_70,g_se,x_16  

7.2 按列合并 

t1 = np.arange(4).reshape((2, 2))
t2 = np.arange(4, 8).reshape((2, 2))
print (t1)
print (t2)
print (np.hstack((t1, t2)))
print (np.concatenate((t1, t2), axis=1))

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_15,color_FFFFFF,t_70,g_se,x_16

和按行道理一样,这里不过多解释……

【补充】可以使用t1[np.newaxis,:]的方式给数组添加横向维度; 使用t1[:,np.newaxis]的方式给数组添加纵向维度(可以使一维变二维)。

8 array分割

8.1 等份分割

np.split()、np.vsplit()、np.hsplit()

t1 = np.arange(12).reshape((3, 4))
print (t1)
# 按行分割
print (np.split(t1, 3, axis=0))
print (np.vsplit(t1, 3))
# 按列分割
print (np.split(t1, 2, axis=1))
print (np.hsplit(t1, 2))

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_20,color_FFFFFF,t_70,g_se,x_16

注意分割的数量要满足等份分割,否则会报错! 

8.2 不等份分割

# 按行分割
print (np.array_split(t1, 2, axis=0))
print (np.vsplit(t1, 3))

 注意第一种方式,将三行分成两份,不会报错,看输出结果:

第一份有两行,第二份一行。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_19,color_FFFFFF,t_70,g_se,x_16

9 array赋值

9.1 关联赋值

t2=t1 方式进行赋值会使t1 和t2产生关联,任何一个修改都会影响另外一个

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_20,color_FFFFFF,t_70,g_se,x_16

9.2 非关联赋值 

t2=t1.copy()  t1 和t2不关联,互不影响。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pWy5LiN5aW95Luj56CB55qE5bCP6YCP5piO,size_20,color_FFFFFF,t_70,g_se,x_16

10 其他

t1 = np.arange(24).reshape((4, 6))
print (t1)
# 累加前面元素
print (np.cumsum(t1))
# 输出元素为原数据和后一数据相减结果
print (np.diff(t1))
# 判断元素是否为0 非零的输出
print (np.nonzero(t1))
# 对数组进行排序  按行排序
print (np.sort(t1))
# 矩阵截取 把数据全部变为某范围内
print (np.clip(t1, 2, 9))

暂时完结

接下:深度学习入门 之 Pandas学习笔记(一)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲不好代码的小透明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值