安装Numpy

终端: sudo pip install numpy CMD: pip install numpy

  • 也可以使用anaconda集成了numpy及pandas.
  • 为了方面后续代码使用anaconda的jupyter notebook。(自行百度anaconda安装)

引用Numpy

#引入Numpy文件
import numpy as np # ‘as np’意为Numpy在此程序中的别名为np(np为约定名称,也可改为其他)

  • 数据维度 包含: 一维数组(常用列表存储) 二维数组(常用数组存储) 多维数组(常用字典存储)

  • Numpy数组类型 - ndarray(类似于array数组)

1. N维数组对象:ndarray

例子:计算$ A^2+B^3 $,其中,A和B是一维数组

#example

/*python常规操作*/
def pySum():
    A = [1,2,3,4,5]
    B = [6,7,8,9,10]
    C = []
    
    for i in range(len(A)):
        C.append(A[i]**2 + B[i]**3)
    return C
print(pySum())

/*Numpy操作*/
import numpy as np

def npSum():
    A = np.array([1,2,3,4,5])
    B = np.array([6,7,8,9,10])
    C = A**2 + B**2
    return C
print(npSum())

2. dnarray属性

属性 说明
.ndim 秩,即轴的数量或维度的数量
.shape ndarray对象的尺度,对于矩阵,n行m列
.size ndarray对象元素的个数,相当于.shaor中n*m的值
.dtype ndarray对象的元素类型
.itemsize ndarray对象中每个元素的大小,以字节为单位
#example
a = np.array([0,1,2,3,4],[5,6,7,8,9])
print(a.ndim) #2
print(a.shape) #(2,5)
print(a.size) #10
print(a.dtype) #dtype('int32')
print(a.itemsize) #4

3. dnarray元素类型

  • 类型1

|数据类型|说明| |:-|:----| |bool|布尔类型,True或False| |intc|与C语言中的int了类型一直,一般是int32或int64| |intp|用于索引的整数,与C语言中ssize_t一致,int32或int64| |int8|字节长度的整数,取值:[-128,127]| |int16|16位长度的整数,取值:[-32768,32767]| |int32|32位长度的整数,取值:[$-2^{31}$,$2^{31}-1$]| |int64|64位长度的整数,取值:[$-2^{63}$,$2^{63}-1$]|

  • 类型2

|数据类型|说明| |:-|:----| |uint8|8位无符号整数,取值:[0,255]| |uint16|16位无符号整数,取值:[0,65535]| |uint32|32位无符号整数,取值:[0,$2^{32}-1$]| |uint64|64位无符号整数,取值:[0,$2^{64}-1$]| |float16|16位半精度浮点数:1位符号位,5位指数,10位尾数| |float32 |32位半精度浮点数:1位符号位,8位指数,23位尾数| |float64 |64位半精度浮点数:1位符号位,11位指数,52位尾数|

  • 类型3

|数据类型|说明| |:-|:----| |complex64| 复数类型,实部和虚部都是32位浮点数| |complex128 |复数类型,实部和虚部都是64位浮点数|

复数类型:实部(.real) + j虚部(.imag)

import numpy as np
x = np.array([[0,1,2,3,4],[5,6,7,8,9]])
x.shape
(2, 5)

4. ndarray实例

x = np.array([[0,1,2,3,4],[9,8,7,6]])
x.shape
(2,)
x.dtype
dtype('O')
x
array([list([0, 1, 2, 3, 4]), list([9, 8, 7, 6])], dtype=object)
x.itemsize
8
x.size
2
  • ndarray数组可以由非同质对象构成,但非同质ndarray对象无法有效发挥NumPy优势,尽量避免使用。

5. ndarray数组创建

  • 从Python中的列表、元组等类型创建ndarray数组

x = np.array(list/tuple)

x = np.array(list/tuple, dtype=np.float32)

  • 使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等

|函数|说明| |:-|:-| |np.arange(n)| 类似range()函数,返回ndarray类型,元素从0到n‐1| |np.ones(shape)| 根据shape生成一个全1数组,shape是元组类型| |np.zeros(shape)| 根据shape生成一个全0数组,shape是元组类型| |np.full(shape,val)| 根据shape生成一个数组,每个元素值都是val| |np.eye(n) |创建一个正方的$n*n$单位矩阵,对角线为1,其余为0|

函数 说明
np.ones_like(a) 根据数组a的形状生成一个全1数组
np.zeros_like(a) 根据数组a的形状生成一个全0数组
np.full_like(a,val) 根据数组a的形状生成一个数组,每个元素值都是val
其他函数 说明
np.linspace() 根据起止数据等间距地填充数据,形成数组
np.concatenate() 将两个或多个数组合并成一个新的数组

6.ndarrary数组的变换

  • 类型变换
a = np.ones((2,3,4), dtype=np.int32)
  • 维度变换
a = np.arange(30).reshape((2,3,5))
a
array([[[ 0,  1,  2,  3,  4],
        [ 5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14]],

       [[15, 16, 17, 18, 19],
        [20, 21, 22, 23, 24],
        [25, 26, 27, 28, 29]]])

7.nadarray数组的操作

  • 数组索引和切片 索引:获取数组中特定位置元素的过程 切片:获取数组元素子集的过程

  • 一维数组的索引和切片:与Python的列表类似

a = np.array([1,2,3,4,5,6])
a[2]
7
a[1:4:2] #起始序号:终止序号:步长,冒号分割
array([3,5])
  • 多维数组的切片
a = np.arange(24).reshape((2,3,4))
a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],
       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
a[:,1,-3] #选取一个维度用:

​ array([ 5, 17])

a[:,1:3,:] #每个维度切片方法与一位数组相同
array([[[ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],
       [[16, 17, 18, 19],
        [20, 21, 22, 23]]])
a[:,:,::2]#每个维度可以使用步长跳跃切片
array([[[ 0,  2],
        [ 4,  6],
        [ 8, 10]],
       [[12, 14],
        [16, 18],
        [20, 22]]])

8.nadarray数组的运算

函数 说明
np.abs(x) np.fabs(x) 计算数组各元素的绝对值
np.sqrt(x) 计算数组各元素的平方根
np.square(x) 计算数组各元素的平方
np.log(x) np.log10(x)  np.log2(x) 计算数组各元素的自然对数、10底对数和2底对数
np.ceil(x) np.floor(x) 计算数组各元素的ceiling值或floor
np.rint(x) 计算数组各元素的四舍五入值
np.modf(x) 将数组各元素的小数和整数部分以两个独立数组形式返回
np.cos(x) np.cosh(x) np.sin(x) np.sinh(x) np.tan(x) np.tanh(x) 计算数组各元素的普通型和双曲型三角函数
np.exp(x) 计算数组各元素的指数值
np.sign(x) 计算数组各元素的符号值,1(+), 0, ‐1(‐)

二元函数

函数 说明
+ ‐* / * 两个数组各元素进行对应运算
np.maximum(x,y) np.fmax() np.minimum(x,y)np.fmin() 元素级的最大值/最小值计算
np.mod(x,y) 元素级的模运算
np.copysign(x,y) 将数组y中各元素值的符号赋值给数组x对应元素
< >  >= <= == != 算术比较,产生布尔型数组