python之Numpy(三)

目录

一,改变数组的维度和形状

二,矩阵的拼接

2.1 图解矩阵的拼接

2.2 拼接方法一览

2.3 concatenate函数详解

2.4 hstack,vstack,dstack,stack详解

三,矩阵的转置

3.1 图解矩阵转置

3.2 transpose方法|函数实现转置

四,数组的分隔

4.1 图解数组的分隔

4.2 numpy.split实现行矩阵分隔

4.3 hsplit,vsplit分隔矩阵

五,数学函数

5.1 数学函数一览

5.2 演示例子

六,算数函数

七,统计函数

7.1 统计函数一览

7.2 各种函数使用方法举例

八,其他函数一览


一,改变数组的维度和形状

        通过reshape方法可以将一维数组变成二维、三维或者多维数组, 也可以通过reshape方法将多维数组变成一维。注意:reshape的ndarray对象的实例方法。

        通过ravel方法或flatten方法可以将多维数组变成一维数组。

        改变数组的维度还可以直接设置Numpy数组的shape属性(元组类型),通过resize方法也可以改变数组的维度,resize方法的参数是一个元组。

import numpy as np

# 创建一维的数组
a = np.arange(24)
# 使用reshape将一维数组变成三维数组
b = a.reshape(2, 3, 4)  # 2x3x4=24
# 将a变成二维数组
c = a.reshape(3, 8)
# 将多维数组变成一维数组
print(c.reshape(-1))
##############################################
# 使用ravel函数将三维的b变成一维的数组
a1 = b.ravel()
# 使用flatten函数将二维的c变成一维的数组
a2 = c.flatten()
# 使用shape属性将三维的b变成二维数组(6行4列)
b.shape = (6, 4)
# 使用resize修改数组的维度
b.resize((2, 12))

二,矩阵的拼接

2.1 图解矩阵的拼接

        由下图可知,矩阵的拼接需要格式相同,行数或者列数至少有一个要一致。

2.2 拼接方法一览

2.3 concatenate函数详解

        语法格式:np.concatenate((a1, a2, ...), axis),axis取0,1,2,……,表示每个维度的轴x,y,z……。a1,a2,a3,……是形状相同的数组。

import numpy as np

x = np.arange(1, 4)
y = np.arange(4, 7)
print(np.concatenate((x, y), axis=0))

2.4 hstack,vstack,dstack,stack详解

        hstack,vstack,dstack分别对应水平,垂直,正交三个方向的拼接。dstack在三维矩阵的第三个方向进行拼接。

        stack()函数的原型是numpy.stack(arrays, axis=0),即将一堆数组的数据按照指定的方向进行堆叠。参数如下:stack([a1,a2,……],axis),stack的axis只能取0和1,因为stack只能用一维数组拼二维矩阵。

        vstack,dstack,stack已经指定了拼接方向,参数如下:([a1,a2,……])。

        注意:上述所有方法返回的都是ndarray矩阵对象。

三,矩阵的转置

3.1 图解矩阵转置

        即:行列互换。

3.2 transpose方法|函数实现转置

import numpy as np

# transpose进行转置
# 二维转置
a = np.arange(1, 13).reshape(2, 6)
print('原数组a')
print(a)
print('转置后的数组')
print(a.transpose()) # 作为ndarray对象的实例方法,也可以使用np.transcope()函数
print(a.T)

        一般只进行二维矩阵的转置。二维矩阵的转置也可以使用np.transcope()函数,参数如下:(ndarray,(1,0)),第二个参数是一个元组,一般为(1,0)表示x和y互换。

四,数组的分隔

4.1 图解数组的分隔

        注意:分隔之后将结果放入一个列表返回,列表的每个元素的类型为ndarray。

4.2 numpy.split实现行矩阵分隔

        函数详解:numpy.split(ary, indices_or_sections, axis)。

        ary:被分隔的对象;        

        indices_or_sections:如果是一个整数,就用该数平均切分(需要确保能够被整分)。如果是一个数组,为沿轴切分的位置 (左开右闭), 如indices_or_sections=[2,5]表示把ary从0-2分一份,2-5分一份,5至-1为一份。

        axis:轴的序号。当分隔二维矩阵时,需要指定axis=0或者1。

import numpy as np

x = np.arange(1, 9)
a = np.split(x, 4)
print(a)
print(a[0])
print(a[1])
print(a[2])
print(a[3])
# 传递数组进行分隔
b = np.split(x, [3, 5])
print(b)
# [array([1, 2]), array([3, 4]), array([5, 6]), array([7, 8])]
# [1 2]
# [3 4]
# [5 6]
# [7 8]
# [array([1, 2, 3]), array([4, 5]), array([6, 7, 8])

4.3 hsplit,vsplit分隔矩阵

        用于分隔矩阵,他们的参数,(ary,x:int),需注意可被int整分。他们已经指定了axis的值。

五,数学函数

        由于numpy是基于矩阵进行运算,所以numpy的数学函数会自动将矩阵中的数据进行遍历运算,即使是二维矩阵也会全部遍历。

5.1 数学函数一览

5.2 演示例子

import numpy as np

x = np.arange(1, 9, dtype=float)
print(np.reciprocal(x))
y = np.arange(1, 13, dtype=float).reshape(3, 4)
print(np.reciprocal(y))

六,算数函数

        算数运算符+,-,x,/,**,%等实际上都是函数实现的。如果参与运算的两个对象都是ndarray,并且形状相同,那么会对彼此之间进行(+ - * /)运算。注意进行运算的前提是:两个或多个矩阵满足运算的shape。

        NumPy 算术函数包含简单的加减乘除: add(),subtract(),multiply()。即:+对于add,-对于substact……。

        注意这里的运算只是矩阵对应元素的加减乘除,并不是线性代数中的矩阵乘法。线代中的矩阵乘法使用matmul(a1,a2)或者点乘np.(a1,a2)。

import numpy as np

a = np.arange(9, dtype=np.float).reshape(3, 3)
b = np.array([10, 10, 10])
print(np.add(a, b))
print(a + b)
print(np.subtract(a, b))
print(a - b)
print(np.multiply(a, b))
print(a * b)
print(np.divide(a, b))
print(a / b)

        out参数的使用,当需要接受计算结果时,用out指定一个empty矩阵的进行接受即可。

x = np.arange(5)
y = np.empty_like(x)
np.multiply(x, 10, out=y) 
print(y)

        numpy.mod() 计算输入数组中相应元素的相除后的余数。函数 numpy.remainder() 也产生相同的结果。

七,统计函数

7.1 统计函数一览

7.2 各种函数使用方法举例

import numpy as np

# power()函数的使用
x = np.arange(1, 5)
y = np.empty_like(x)
np.power(x, 2, out=y)
print(y)

# median ()函数的使用
a = np.array([4, 2, 1, 5])
# 计算偶数的中位数
print('偶数的中位数:', np.median(a))
a = np.array([4, 2, 1])
print('奇数个的中位数:', np.median(a))
a = np.arange(1, 16).reshape(3, 5)
print('调用median函数')
print(np.median(a))
print('调用median函数,axis=1 行的中值')
print(np.median(a, axis=1))
print('调用median函数,axis=0 列的中值')
print(np.median(a, axis=0))

# mean()函数的使用
a = np.arange(1, 11).reshape(2, 5)
print(np.mean(a))
print('调用mean函数 axis=0 列')
print(np.mean(a, axis=0))
print('调用mean函数 axis=1 行')
print(np.mean(a, axis=1))

# 函数的使用
a = np.random.randint(10, 50, size=20)
np.max(a)
np.sum(a)
np.min(a)
np.max(a)
np.ptp(a)
np.unique(a)
np.nonzero(a)

八,其他函数一览

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值