Numpy
Numpy
Numpy是python里面一个用于科学计算的库,它是大量数学和科学计算包的基础,例如pandas就会用到numpy。为了更好的学习python科学计算及数据分析,掌握numpy是非常必要的。
Numpy功能
- Numpy主要的功能之一用来操作数组和矩阵
- Numpy是科学计算、深度学习等高端领域的必备工具
- Numpy包含很多的数学函数,覆盖了很多数学领域,如:线性代数、傅里叶变换、随机数生成
- Numpy可以取代一些商用的数学软件。Matlab一个交互环境,Python+Numpy==Matlab
Numpy基础
Ndarray
- 它是一个由同类元素组成的多维数组
- 每个ndarray只有一种dtype类型
Ndarray创建 - np.array创建
>>>import numpy as np #导入numpy
>>>a = [1,2,3,4,5,6] #创建一维数组
>>>b = np.array(a)
>>>print(b)
>[1,2,3,4,5,6]
>>>c = [[1,2,3],[4,5,6]] #创建多维数组
>>>d = np.array(c)
>>>print(d)
>[[1,2,3]
[4,5,6]]
- np.zeros
指定大小的全0数组。注意:第一个参数是元组,用来指定大小,如(3, 4)
>>>b = np.zeros((3,4),dtype=np.int32)
>>>print(b)
>[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
- np.zeros_like
生成与矩阵c相同尺寸大小的元素为的0多维数组
>>>c = np.arange(1,8,2,dtype=np.int32).reshape((2,2))
>>>d = np.zeros_like(c)
>>>print(d)
>[[0 0]
[0 0]]
- np.ones
指定大小的全1数组。注意:第一个参数是元组,用来指定大小,如(3, 4)
>>>b = np.ones((3,4),dtype=np.int64)
>>>print(b)
>[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
- np.ones_like
生成与矩阵c相同尺寸大小的元素为1多维数组
>>>c = np.arange(1,8,2,dtype=np.int32).reshape((2,2))
>>>d = np.ones_like(c)
>>>print(d)
>[[1 1]
[1 1]]
- np.empty
初始化数组,不是总是返回全0,有时返回的是未初始的随机值(内存里的随机值)
>>>b = np.empty((3,4))
>>>print(b)
>[[5.e-324 5.e-324 5.e-324 5.e-324]
[5.e-324 5.e-324 5.e-324 5.e-324]
[5.e-324 5.e-324 5.e-324 5.e-324]]
- np.arange
arange相当于array和range的结合,前三个参数和range一样,(start,end,步长)
创建一个一维 ndarray 数组,常常与reshape连用,reshape() 将 重新调整数组的维数。
>>>c = np.arange(2,10,2,dtype=np.int32)
>>>print(c)
>[2 4 6 8]
>>>d = np.arange(1,8,2,dtype=np.int32).reshape((2,2))
>>>print(d)
>[[1 3]
[5 7]]
- np.linspace
linspace函数通过指定开始值、终值和元素个数来创建一维数组,也通常与reshape连用,改变数组形状
>>>b = np.linspace(1,20,10)
>>>print(b)
>[ 1. 3.11111111 5.22222222 7.33333333 9.44444444 11.55555556
13.66666667 15.77777778 17.88888889 20. ]
- np.logspace
logspace函数和linspace类似,不过它创建等比数列
>>>b = np.logspace(1,20,10)
>>>print(b)
>[1.00000000e+01 1.29154967e+03 1.66810054e+05 2.15443469e+07
2.78255940e+09 3.59381366e+11 4.64158883e+13 5.99484250e+15
7.74263683e+17 1.00000000e+20]
- np.asarray
把python中的list和元组转换成numpy中的ndarray
>>>c = [1,2,3,4,5,6]
>>>b = np.asarray(c)
>>>print(b)
>>>print(type(b))
>[1 2 3 4 5 6]
<class 'numpy.ndarray'>
Ndarray的基本属性
- ndim 查看数组的维度
- shape 查看数组的形状大小
- size 查看数组的元素个数
- dtype 查看数组的元素类型
- type 查看数组的类型,返回ndarray
- itemsize 查看数组元素的字节大小
- data 查看实际数组元素的缓冲区地址
- flat 查看数组元素的迭代器
>>>import numpy as np
>>>a = np.array([[1,2,3],[4,5,6]]) #创建数组
>>>print(a.ndim) #查看数组维度
>2
>>>print(a.shape) #查看数组形状大小
>(2,3)
>>>print(a.size) #查看数组元素个数
>6
>>>print(a.dtype) #查看数组元素类型
>int32
>>>print(type(a)) #查看数组类型
><class 'numpy.ndarray'>
>>>print(a.itemsize) #查看数组元素字节大小
>4
>>>print(a.data) #查看实际数组元素的缓冲区地址
><memory at 0x000001AEED4D8120>
>>>print(a.flat) #查看数组元素的迭代器
><numpy.flatiter object at 0x000001AEEC4F72F0>
Ndarray的数据类型
- bool 布尔类型
- int: int8 \ int16 \ int32 \ int64 整数类型
- uint: uint8 \ uint16 \ uint32 \ uint64 无符号整数类型
- float: float16 \ float32 \ float64 浮点数类型
- cpmplex: complex64 \ complex128 复数类型
Ndarray存取元素
- 使用整数序列:可以是列表,可以是元组
- 整数序列中的元素可以是下标,可以是布尔值
- 使用整数序列作为下标获得数组不和原始数组共享数据空间
- 布尔存取只能是数组
>>>x = np.arange(1,10,1)
>>>a = x[[2,4,6]]
>>>print(a)
>[3 5 7]
>>>b = x[x>5]
>>>print(b)
>[6 7 8 9]
还会继续更新numpy的更多操作哟!