接上
在前面我们已经学习过数组的部分计算方法了。接下来主要是体验一下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 其他
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) 两种方式效果一样,输出的结果和矩阵的乘法运算方式也一模一样。
主要有求指定元素的索引,以及根据索引找取元素。
为了方便记忆,可以理解为axis=0表示沿着横向画一条线,横线上的点是列求平均值;每一行都要参与运算。axis=1表示沿着列画一条竖线,竖线上的每一个值表示行求平均值。每一列都要参与运算。此外,t1.mean()和np.average(t1)也能达到一样的效果。
也可以使用np.transpose()方法实现。
t1是4行6列形状的数组
# 行迭代 逐行输出
for row in t1:
print (row)
按行迭代输出结果为:
# 列迭代 逐列输出 借助转置
for column in t1.T:
print (column)
按列迭代输出结果为:
# 逐个元素输出 先展平
for item in t1.flat:
print (item)
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))
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))
和按行道理一样,这里不过多解释……
【补充】可以使用t1[np.newaxis,:]的方式给数组添加横向维度; 使用t1[:,np.newaxis]的方式给数组添加纵向维度(可以使一维变二维)。
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))
注意分割的数量要满足等份分割,否则会报错!
# 按行分割
print (np.array_split(t1, 2, axis=0))
print (np.vsplit(t1, 3))
注意第一种方式,将三行分成两份,不会报错,看输出结果:
第一份有两行,第二份一行。
t2=t1 方式进行赋值会使t1 和t2产生关联,任何一个修改都会影响另外一个
t2=t1.copy() t1 和t2不关联,互不影响。
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学习笔记(一)