python高级语法-你了解numpy吗(numpy基础)
大体上介绍一下这个包。
1.简介
NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。
2.安装
python官方版本,可以通过pip或者源码安装
推荐使用anaconda,这是发行版的python,内含了numpy等重要第三方库。
anaconda安装使用见https://blog.csdn.net/zhouchen1998/article/details/81382006
3.创建ndarray对象
这是这个模块最核心的对象,表示一个n维数组,它是相同类型的数据集合。
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0
其中,
object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
dtype 数组的所需数据类型,可选。
copy 可选,默认为true,对象是否被复制。
order C(按行)、F(按列)或A(任意,默认)。
subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
ndimin 指定返回数组的最小维数。
import numpy as np
# 一维
a = np.array([1, 2, 3])
print(a)
# n维
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
# 带数据类型设置
c = np.array([1, 2, 3], dtype=complex)
print(c)
# 带最小维度设置
d = np.array([[1, 2, 3], [4, 5, 6]], ndmin=3)
print(d)
4.dtype的使用
首先,numpy提供了比python更加丰富的标量数据类型。
numpy.dtype(object, align, copy)
其中,
Object:被转换为数据类型的对象。
Align:如果为true,则向字段添加间隔,使其类似 C 的结构体。
Copy: 生成dtype对象的新副本,如果为flase,结果是内建数据类型对象的引用。
import numpy as np
# 内置转换
dt1 = np.dtype(np.int32)
print(dt1)
# 简略写法
dt2 = np.dtype('i4')
print(dt2)
# 结构化数据
dt3 = np.dtype([('year', np.int16)])
print(dt3)
a = np.array([(1998, ), (2000, ), (2012, )], dtype=dt3)
print(a)
# 结构化数据的字段访问
print(a['year'])
# 完整的结构示例,类似C语言结构体
date = np.dtype([('year', np.int32), ('month', np.int8), ('day', np.int8)])
b = np.array([(1998, 5, 26), (2000, 5, 26), (2014, 5, 26)])
print(b)
5.ndarray属性
shape:包含数组维度的元组
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print(a.shape)
# a.shape = (3, 2)
# print(a)
# 等价于下面
c = a.reshape(3, 2)
print(c)
ndim: 维度数
a = np.arange(24)
print(a.ndim)
b = a.reshape(2, 4, 3)
print(b.ndim)
itemsize:每个元素占字节数
flags:数组的几个状态
6.特殊数组的创建
numpy.empty(shape, dtype = float, order = 'C') 没有初值但是分配空间的数组
numpy.zeros(shape, dtype = float, order = 'C') 初值全为0的数组
numpy.ones(shape, dtype = None, order = 'C') 初值全为1的数组
其中,
shape是形状,如(2,2)表示二行二列
dtype表示数据类型
order表示组织风格
其余数值类型数组如arange不细说
import numpy as np
a = np.empty((2, 2), dtype=np.int8, order='C')
print(a)
b = np.zeros((2, 2), dtype=np.int8, order='C')
print(b)
c = np.ones((2, 2), dtype=np.int8, order='C')
print(c)
7.从python内置数据类型转换为numpy的数组
asarray
numpy.asarray(a, dtype = None, order = None)
其中,
a 任意形式的输入参数,比如列表、列表的元组、元组、元组的元组、元组的列表
dtype,order 不再说明
import numpy as np
# 列表
x = [1, 2, 3]
a = np.asarray(x)
print(a)
# 元组
a = np.asarray(x)
print(a)
# 元组列表
x = [(1, 2, 3), (4, 5)]
a = np.asarray(x)
print(a)
frombuffer
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)
其中,
buffer 任何暴露缓冲区接口的对象
dtype 同上
count 需要读取的数据数量,默认为-1,读取所有数据
offset 需要读取的起始位置,默认为0
fromiter
numpy.fromiter(iterable, dtype, count = -1)
其中,
iterable 任何可迭代对象
dtype 返回数组的数据类型
count 需要读取的数据数量,默认为-1,读取所有数据
上一篇: 优化你的jupyter notebook使用体验--自动补全+主题设置
下一篇: Numpy基础