东阳的学习记录,坚持就是胜利!
numpy数组的创建
a = np.array([2,23,4],dtype=np.uint8)
np.array([[1,2,3], [4,5,6]])
# 创建全0数组
np.zeros((5,4))
# 创建全1数组
np.ones((3,4))
np.arange(10, 20).reshape((2,5))
np.linspace(1,10,20) # 在[1, 10]之间等分出20个元素
# 随机初始化
a = np.random.random((2,4))
矩阵计算
- 矩阵点乘
- + - * /
- np.transpose() 转置
- .T 转置
a = np.array([[1,2], [3,4]])
b = np.arange(4).reshape((2, 2))
np.dot(a, b)
常用的统计方法
- np.argmax() 求最大值的索引
- np.mean() 求平均值
- np.cumsum() 累加
- nonzero() 返回行, 列索引的两个array
- np.sort() 排序
- np.clip(a, min, max) # 二值化(数据截断)
>>>a
out: array([[0.24769262, 0.73523902, 0.60446735, 0.48187713],
[0.51271735, 0.89952252, 0.99599623, 0.04154195]])
>>> np.argmax(a) # 返回最大值的索引
out: 6
# 平均值
np.mean(a)
# 累加
np.cumsum(a)
# 数据截断
>>> a
out: array([[ 1, 2, 3, 4, 5],
[20, 3, 34, 89, 10]])
>>> np.clip(a, 3, 9)
out: array([[3, 3, 3, 4, 5],
[9, 3, 9, 9, 9]])
获取numpy中的元素
- bool索引
- 下标运算符[]
- 切片
- .flatten() 拉直
bool索引
>>> data = np.arange(16).reshape(4,4)
>>> data
out: array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>>idx = data >= 10
>>>idx
out: array([[False, False, False, False],
[False, False, False, False],
[False, False, True, True],
[ True, True, True, True]], dtype=bool)
>>> data[idx]
out: data[idx]
1
data[idx]
array([10, 11, 12, 13, 14, 15])
# 输出是元素线性化后的结果
>>> data[data >= 10]
out: array([10, 11, 12, 13, 14, 15])
# 偶数元素
>>> data[data % 2 == 0]
out: array([ 0, 2, 4, 6, 8, 10, 12, 14])
切片
>>>a
out: array([[ 3, 4, 5, 6],
[ 7, 8, 9, 10],
[11, 12, 13, 14]])
>>>a[2][2]
out: 13
>>> a[1,::]
out: array([ 7, 8, 9, 10])
矩阵合并
- hstack 横向合并
- vstack 纵向合并
- concatenate((), axis=1)
- np.newaxis() # 增加一个维度
>>> a = np.array([1,1,1])
>>> b = np.array([2,2,2])
>>> np.hstack((a,b))
out: array([1, 1, 1, 2, 2, 2])
>>> np.vstack((a,b))
array([[1, 1, 1],
[2, 2, 2]])
In [23]: a = np.array([[1, 2], [3, 4]])
In [24]: b = np.array([[5, 6]])
In [25]: np.concatenate((a, b), axis=0)
Out[25]:
array([[1, 2],
[3, 4],
[5, 6]])
>>>a
array([1,1,1])
>>>a.T
out: array([1, 1, 1])
>>>a[np.newaxis,:]
out: array([[1, 1, 1]])
>>>a[np.newaxis,:].T
out:
array([[1],
[1],
[1]])
a[np.newaxis,:]
矩阵分割
返回的是array对象组成的列表
- split
- hsplit
- vsplit
>>> a = np.arange(12).reshape((3,4))
out:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> np.array_split(a, 3, axis=1)
out:
[array([[0, 1],
[4, 5],
[8, 9]]),
array([[ 2],
[ 6],
[10]]),
array([[ 3],
[ 7],
[11]])]
# vsplit
>>> np.vsplit(a,3)
out:
[array([[0, 1],
[4, 5],
[8, 9]]),
array([[ 2, 3],
[ 6, 7],
[10, 11]])]