什么叫numpy
NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。
从一张图片上去认识numpy
import numpy as np
# matplotlib画图的,也可以读取图片
import matplotlib.pylot as plt
#读取一张图片
cat = plt.imread('cat.png')
# 查看这张图片的维度
cat.shape
# 展示这张图片
plt.imshow(cat)
什么是ndarray
ndarray是numpy的最重要的形式,表示的是n个维度的数组
上个例子的cat的类型就是ndarray
Numpy的数值类型:
- bool:布尔类型,1 个字节,值为 True 或 False。
- int:整数类型,通常为 int64 或 int32 。
- intc:与 C 里的 int 相同,通常为 int32 或 int64。
- intp:用于索引,通常为 int32 或 int64
- int8:字节(从 -128 到 127)
- int16:整数(从 -32768 到 32767)
- int32:整数(从 -2147483648 到 2147483647)
- int64:整数(从 -9223372036854775808 到 9223372036854775807)
- uint8:无符号整数(从 0 到 255) unsigned
- uint16:无符号整数(从 0 到 65535)
- uint32:无符号整数(从 0 到 4294967295)
- uint64:无符号整数(从 0 到 18446744073709551615)
- float:float64 的简写。
- float16:半精度浮点,5 位指数,10 位尾数
- float32:单精度浮点,8 位指数,23 位尾数
- float64:双精度浮点,11 位指数,52 位尾数
- complex:complex128 的简写。
- complex64:复数,由两个 32 位浮点表示。
- complex128:复数,由两个 64 位浮点表示。
Numpy中,ndarray类的六个参数
- shape:数组的形状
- dtype:数据类型。
- buffer:对象暴露缓冲区接口。
- offset:数组数据的偏移量
- strides:数据步长。
- order:{‘C’,’F’},以行或列为主排列顺序。
创建ndarray的一些方法
从列表或元组转换
在 numpy 中,我们使用 numpy.array 将列表或元组转换为 ndarray 数组。其方法为:
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
其中,参数:
- object:列表、元组等。
- dtype:数据类型。如果未给出,则类型为被保存对象所需的最小类型。
- copy:布尔来写,默认 True,表示复制对象。
import numpy as np
l = list('123456')
nd1 = np.array(l)
arange方法创建
arange() 的功能是在给定区间内创建一系列均匀间隔的值。
import numpy as np
#numpy.arange(start, stop, step, dtype=None)
nd1 = np.arange(0,150,step=5,dtype=np.float32)
linspace 方法创建
inspace用于在指定的区间内返回间隔均匀的值
import numpy as np
#numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
nd = np.linspace(0,150,num=151)
ones 方法创建
用于快速创建数值全部为 1 的多维数组
import numpy as np
#numpy.ones(shape, dtype=None, order='C')
nd = np.ones(shape=(456,730,3))
zeros 方法创建
zeros 方法和上面的 ones 方法非常相似,不同的地方在于,这里全部填充为 0
import numpy as np
#numpy.zeros(shape, dtype=None, order='C')
nd = np.zeros(shape=(456,730,3))
full方法创建
numpy.full用于创建一个自定义形状的数组,可以自己指定一个值,该值填满整个矩阵。
import numpy as np
#numpy.full(shape,fill_value=num)
nd = np.full(shape=(456,730,3),fill_value=125.0)
eye 方法创建
numpy.eye 用于创建一个二维数组,其特点是k 对角线上的值为 1,其余值全部为0
import numpy as np
#numpy.eye(N, M=None, k=0, dtype=<type 'float'>)
nd = np.eye(5,5)