NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
- 一个强大的N维数组对象 ndarray
- 广播功能函数
- 整合 C/C++/Fortran 代码的工具
- 线性代数、傅里叶变换、随机数生成等功能
Ndarray
可以和python一样切片,但是type必须相同
>>> a=np.array([1,2,3])
>>> a
array([1, 2, 3])
>>> a=np.array([[1,2],[3,4]])
>>> a
array([[1, 2],
[3, 4]])
>>> a=np.array([1,2,3,4,5],ndmin=2)
>>> a
array([[1, 2, 3, 4, 5]])
>>> a=np.array([1,2,3],dtype=complex)
>>> a
array([1.+0.j, 2.+0.j, 3.+0.j]) 构造函数
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
| 名称 | 描述 |
|---|---|
| object | 数组或嵌套的数列 |
| dtype | 数组元素的数据类型,可选 |
| copy | 对象是否需要复制,可选 |
| order | 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) |
| subok | 默认返回一个与基类类型一致的数组 |
| ndmin | 指定生成数组的最小维度 |
order描述的是数组在内存中的构建方式,C表示的是C语言方案,而F则是FORTRAN。
arrange
和py的range一样
>>> np.arange(24)
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])
>>> np.arange(1,24)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23])
>>> np.arange(1,24,2)
array([ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23]) 数据类型
| 名称 | 描述 |
|---|---|
| bool_ | 布尔型数据类型(True 或者 False) |
| int_ | 默认的整数类型(类似于 C 语言中的 long,int32 或 int64) |
| intc | 与 C 的 int 类型一样,一般是 int32 或 int 64 |
| intp | 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64) |
| int8 | 字节(-128 to 127) |
| int16 | 整数(-32768 to 32767) |
| int32 | 整数(-2147483648 to 2147483647) |
| int64 | 整数(-9223372036854775808 to 9223372036854775807) |
| uint8 | 无符号整数(0 to 255) |
| uint16 | 无符号整数(0 to 65535) |
| uint32 | 无符号整数(0 to 4294967295) |
| uint64 | 无符号整数(0 to 18446744073709551615) |
| float_ | float64 类型的简写 |
| float16 | 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位 |
| float32 | 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位 |
| float64 | 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位 |
| complex_ | complex128 类型的简写,即 128 位复数 |
| complex64 | 复数,表示双 32 位浮点数(实数部分和虚数部分) |
| complex128 | 复数,表示双 64 位浮点数(实数部分和虚数部分) |
dtype
除了可以用来查询type以外,还可以用来复制type和创建type
>>> np.dtype(np.int32)
dtype('int32')
>>> np.dtype('i4')
dtype('int32')
>>> np.dtype('<i4')
dtype('int32')
>>> np.dtype([('age',np.int8)])
dtype([('age', 'i1')])
# int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
>>> dt = np.dtype([('age',np.int8)])
>>> a = np.array([(10,),(20,),(30,)], dtype = dt)
>>> a
array([(10,), (20,), (30,)], dtype=[('age', 'i1')])
>>> np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
dtype([('name', 'S20'), ('age', 'i1'), ('marks', '<f4')])
>>> np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]))
array([(b'abc', 21, 50.), (b'xyz', 18, 75.)],
dtype=[('name', 'S20'), ('age', 'i1'), ('marks', '<f4')])
>>> student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 内建类型
| 字符 | 对应类型 |
|---|---|
| b | 布尔型 |
| i | (有符号) 整型 |
| u | 无符号整型 integer |
| f | 浮点型 |
| c | 复数浮点型 |
| m | timedelta(时间间隔) |
| M | datetime(日期时间) |
| O | (Python) 对象 |
| S, a | (byte-)字符串 |
| U | Unicode |
| V | 原始数据 (void) |
数组 array
| 属性 | 说明 |
|---|---|
| ndarray.ndim | 秩,即轴的数量或维度的数量 |
| ndarray.shape | 数组的维度,对于矩阵,n 行 m 列 |
| ndarray.size | 数组元素的总个数,相当于 .shape 中 n*m 的值 |
| ndarray.dtype | ndarray 对象的元素类型 |
| ndarray.itemsize | ndarray 对象中每个元素的大小,以字节为单位 |
| ndarray.flags | ndarray 对象的内存信息 |
| ndarray.real | ndarray元素的实部 |
| ndarray.imag | ndarray 元素的虚部 |
| ndarray.data | 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。 |
>>> a = np.array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> a.ndim
2
>>> a.shape
(2, 3)
>>> b=a.reshape(3,2)
>>> b
array([[1, 2],
[3, 4],
[5, 6]])
>>> a.itemsize
4
>>> a.flags # 查看内存信息
C_CONTIGUOUS : True # 数据是在一个单一的C风格的连续段中
F_CONTIGUOUS : False # 数据是在一个单一的Fortran风格的连续段中
OWNDATA : True # 数组拥有它所使用的内存或从另一个对象中借用它
WRITEABLE : True # 数据区域可以被写入,将该值设置为 False,则数据为只读
ALIGNED : True # 数据和所有元素都适当地对齐到硬件上
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False # 这个数组是其它数组的一个副本,当这个数组被释放时,原数组的内容将被更新 使用numpy.asarray(a, dtype = None, order = None)可以从列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组来创建一个array。
slice
除了直接切片以外,还可以调用切片方法,创造出一个实例化的切片方案
>>> import numpy as np >>> a=np.arange(10) >>> a array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> s=slice(2,7,1) >>> s slice(2, 7, 1) >>> a[s] array([2, 3, 4, 5, 6])
线性代数
https://www.runoob.com/numpy/numpy-matrix.html

京公网安备 11010502036488号