numpy基础
python基础
启动shell
ipython
启动jupyter notebook
jupyter notebook
jupyter notebook --port 9999
数据结构
list = [val1,val2,val3,val4]
dict = {key1:val1,key2:val2}
tuple = (val1,val2,val3,val4)
set = {val1,val2,val3,val4}
-
列表(list):
- 列表有顺序
- 列表元素可以修改
- 列表可以容纳任何对象
-
字典(dictionary):
- 字典中的数据必须以键值对的形式出现
- 键不能重复,值可以重复
- 键不能修改,值可以修改
-
元组(tuple):
不可修改,类似稳定的列表
-
集合(set):
- 无序
- 不重复
- 不能被切片+索引
- .可以修改
numpy
导入numpy
import numpy as np
理解Python中的数据类型
np.array 从 Python 列表创建数组:
## 整型数组:
np.array([1, 4, 2, 5, 3])
## 嵌套列表构成的多维数组
np.array([range(i, i + 3) for i in [2, 4, 6]])
从头创建数组
+ 创建一个长度为10的数组,数组的值都是0
np.zeros(10, dtype=int)
+ 创建一个3×5的浮点型数组,数组的值都是1
np.ones((3, 5), dtype=float)
+ 创建一个3×5的浮点型数组,数组的值都是3.14
np.full((3, 5), 3.14)
+ 创建一个3×5的浮点型数组,数组的值是一个线性序列 ## 从0开始,到20结束,步长为2
np.arange(0, 20, 2)
+ 创建一个5个元素的数组,这5个数均匀地分配到0~1
np.linspace(0, 1, 5)
+ 创建一个3×3的、在0~1均匀分布的随机数组成的数组
np.random.random((3, 3))
+ 创建一个3×3的、均值为0、方差为1的 正态分布的随机数数组
np.random.normal(0, 1, (3, 3))
+ 创建一个3×3的、[0, 10)区间的随机整型数组
np.random.randint(0, 10, (3, 3))
+ 创建一个3×3的单位矩阵
np.eye(3)
+ 创建一个由3个整型数组成的未初始化的数组,数组的值是内存空间中的任意值
np.empty(3)
数组的属性 :
确定数组的大小、形状、存储大小、数据类型。
.ndim
.shape
.size
.dtype
数组的索引 :
获取和设置数组各个元素的值。
x[0]
x[-1]
##多维索引
x[0, 0]
## 修改元素的值
x[0 , 0] = 12
数组的切分(slice) :
获取或设置更小的子数组。 x[ start: stop: step],返回视图
x[:5] ## 前五个元素
x[5:] ## 索引五之后的元素
x[4:7] ## 中间的子数组
x[::2] ## 每隔一个元素
x[1::2] ## 每隔一个元素,从索引1开始
x[::-1] ## 所有元素,逆序的
x[5::-2] ## 从索引5开始每隔一个元素逆序
多维子数组
x2[:2, :3] ## 两行,三列
x2[:3, ::2] ## 所有行,每隔一列
x2[::-1, ::-1] ## 逆序
获取数组的行和列 :索引与切片组合起来实现这个功能
print(x2[:, 0]) ## x2的第一列
print(x2[0, :]) ## x2的第一行
print(x2[0]) ##等于x2[0, :]
非副本视图的子数组
.copy() ## 创建数组的副本
数组的变形 :改变给定数组的形状。
x = np.array([1, 2, 3])
## 通过变形获得的行向量 x.reshape((1, 3))
## 通过newaxis获得的行向量 x[np.newaxis, :]
## 通过变形获得的列向量 x.reshape((3, 1))
## 通过newaxis获得的列向量 x[:, np.newaxis]
数组的拼接和分裂 :
拼接:np.concatenate、np.vstack 和 np.hstack
np.concatenate([x, y])
## 沿着第一个轴拼接
np.concatenate([x, y])
## 沿着第二个轴拼接(从0开始索引)
np.concatenate([x, y], axis=1)
## 垂直栈数组
np.vstack([x, y])
## 水平栈数组
np.hstack([x, y])
分裂:np.split、np.hsplit 和 np.vsplit
x1, x2, x3 = np.split(x, [3, 5]) ## [3, 5]第3个和第5个未知是分割点
upper, lower = np.vsplit(grid, [2])
left, right = np.hsplit(grid, [2])