一、
1.下载numpy
Numpy用来管理多维数组,通常是数字,可以通过索引来访问
pip install numpy
pip install -i https://pypi.douban.com/simple numpy
pip install -i --trusted-host http://pypi.douban.com/simple numpy
2.arange函数 创建一维数组
a = np.arange(10)
print(a)
print(type(a))
3.ndarry属性
a = np.arange(15).reshape(3, 5)
print(a)
# 形状3行5列
print(a.shape)
# 维度(2维)
print(a.ndim)
# 数据类型 int32
print(a.dtype.name)
# item 长度 4
print(a.itemsize)
# 长度15
print(a.size)
4.使用array创建数组
# 使用列表创建一维数组
a = np.array([1, 2, 3])
print(a)
print(type(a))
# 使用二维列表创建二维数组
a = np.array([(1, 2, 3), (4, 5, 6)])
print(a)
print(type(a))
5.使用其他方法创建数组
# 创建具有初始占位符内容的数组
# 全0
a = np.zeros((2, 3))
print(a)
# 全1
a = np.ones((2, 3))
print(a)
# 默认全1
a = np.empty((2, 3))
print(a)
# arange 整型
a = np.arange(1, 10, 2)
print(a)
# linspace 浮点型
a = np.linspace(0, 2, 9)
print(a)
# zeros_like/ones_like 和另外一个矩阵相似,但是值全为0/1
a = np.arange(6).reshape(2,3)
print(a)
a = np.zeros_like(a)
print(a)
# np.random.rand() [0, 1)之间的随机数
a = np.random.rand(2, 3)
print(a)
# np.eye(3) 对角线全1
a = np.eye(3)
print(a)
6.求逆矩阵
一种方法是使用n.numpymatrix类(而不是numpy数组)和I属性。例如:
>>> m = np.matrix([[2,3],[4,5]])
>>> m.I
matrix([[-2.5, 1.5],
[ 2. , -1. ]])
二、基本操作
1.算数运算作用在元素级别
a = np.array([4, 5, 6])
b = np.arange(3)
# [4, 5, 6]
print(a)
# [0, 1, 2]
print(b)
# [4, 4, 4]
print(a-b)
# [0, 1, 4]
print(b ** 2)
print(10* np.sin(a))
print(a < 5)
2.乘法运算作用在元素上,如果使用矩阵可以使用odt函数
a = np.array( [[1, 1],
[0, 1]] )
b = np.array( [[2, 0],
[3, 4]] )
print(a * b)
print(a.dot(b))
print(np.dot(a, b))
3.某些操作(如+=和*=)可以修改现有数组,而不是创建新数组
a = np.ones((2,3), dtype=int)
b = np.random.random((2,3))
a *= 3
print(a)
b += a
print(b)
# a += b 类型错误
# print(a)
4.ndarray方法
a = np.random.random((2, 3))
print(a)
print(a.sum())
print(a.min())
print(a.max())
5.指定axis参数
b = np.arange(12).reshape(3,4)
print(b)
# 列的和
print(b.sum(axis=0))
# # 行的和
print(b.sum(axis=1))
# 每行累加和
print(b.cumsum(axis=1))
三、通用函数
1.all测试沿给定轴的所有数组元素是否w为true
a = np.all([[True,False],[True,True]])
print(a)
a = np.all([[True,False],[True,True]], axis=0)
print(a)
a = np.all([-1, 4, 5])
print(a)
2.测定沿给定轴的任何数组元素是否为true
a = np.any([[True, False], [True, True]])
print(a)
a = np.any([[True, False], [False, False]], axis=0)
a = np.any([-1, 0, 5])
print(a)
a = np.zeros((2, 3))
print(np.any(a))
3.argmax/argmin返回沿轴的最大/最小值的索引
a = np.arange(6).reshape(2,3)
print(a)
print(np.argmax(a))
print(np.argmax(a, axis=0))
print(np.argmax(a, axis=1))
print(np.argmin(a))
print(np.argmin(a, axis=0))
print(np.argmin(a, axis=1))
4.average沿指定轴计算加权平均值
data = np.arange(6).reshape((3,2))
avg = np.average(data, axis=1, weights=[1./4, 3./4])
print(avg)
5.sort返回数组的排序副本
a = np.array([[1,4],[3,1]])
print(np.sort(a))
# 拉直为一维数组,再排序
print(np.sort(a, axis=None))
# 沿着纵轴排序
print(np.sort(a, axis=0))
6.argsort返回将数组排序的索引
x = np.array([5, 3, 8])
print(np.argsort(x))
# 二维
x = np.array([[0, 3], [2, 2]])
print(np.argsort(x, axis=0))
7.ceil元素方式返回输入的上限
a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
print( np.ceil(a))
8.floor逐元素的返回输入的下限
a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
print(np.floor(a))
9.trunc按元素方式返回输入的截断值
a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
print(np.trunc(a))
10.rint舍入整形
a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
print(np.rint(a))
11.clip剪辑(限制)数组中的值
# 给定间隔,间隔之外的值被剪切到间隔边缘。例如,如果指定[0, 1]的间隔,则小于0的值变为0,并且大于1的值变为1 。
a = np.arange(10)
# 数值在1-8之间,不是的替换
print(np.clip(a, 1, 8))
12.mean沿指定轴计算算数平均值
a = np.array([[1, 2], [3, 4]])
print(np.mean(a))
print(np.mean(a, axis=0))
print(np.mean(a, axis=1))
13.var计算沿指定轴的方差
方差定义:
https://baike.baidu.com/item/%E6%96%B9%E5%B7%AE/3108412?fr=aladdin
# 统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。
a = np.array([[1, 2], [3, 4]])
print(np.mean(a)) # 2.5
var = np.mean(abs(a - a.mean())**2)
print(var)
print(np.var(a))
14.std计算沿指定轴的标准偏差,方差的平方根
# 标准方差:https://baike.baidu.com/item/%E6%A0%87%E5%87%86%E5%B7%AE/1415772?fr=aladdin
a = np.array([[1, 2], [3, 4]])
print(np.sqrt(np.var(a)))
print(np.std(a))
print(np.std(a, axis=0))
print(np.std(a, axis=1))
15.median计算沿指定轴的中值
a = np.array([[10, 7, 4], [3, 2, 1]])
print(np.median(a))
print(np.median(a, axis=0))
print(np.median(a, axis=1))
四、Numpy索引 迭代、切片
1.一维数组了一索引,切片,迭代类似于列表和其他python序列
a = np.arange(10)**3
print(a)
print(a[2])
print(a[2:6])
# 遍历
for x in a:
print(x)
2.多维数组每个轴可以有一个索引。这些索引以逗号分隔的元组给出
a = np.arange(12).reshape(3, 4)
print(a)
# 第1行,第2列,索引从0开始
print(a[1,2])
# 第二列的所有
print(a[:,1])
print(a[1])
# 迭代
for row in a:
print(row)
print('--------------')
for row in a:
for x in row:
print(x, end=' ')
print()
五、numpy形状操作
1.reshape
a = np.arange(12).reshape(3, 4)
print(a)
print(a.shape)
2.Ravle(拉直)
b = a.ravel()
print(b)
3.a.T转置
c = a.T
print(c)
4.resize(修改自身)
a.resize(2, 6)
# print(a)
5.vstack/hstack水平堆叠/垂直堆叠
a = np.array([(1, 2, 3),(4, 5, 6)])
b = np.array([(10, 20, 30),(40, 50, 60)])
c = np.vstack((a, b))
print(c)
d = np.hstack((a, b))
print(d)
6.column_stack
a = np.array([(1, 2, 3),(4, 5, 6)])
b = np.array([(10, 20, 30),(40, 50, 60)])
print(np.column_stack((a, b)))
7.拆分hsplit/vsplit/array_split(指定轴)
a = np.floor(10*np.random.random((2,12)))
print(a)
print(np.hsplit(a, 3))
六、numpy文件读写
1.保存文件savetxt
a = np.eye(3)
print(a)
np.savetxt('eye.txt', a)
print(np)
print(np.loadtxt('eye.txt'))
2.加载csv文件(逗号分隔值)
c,v = np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True)
print(v)
'''
加载数据,加载第六列和第七列到数组中。
'data.csv':数据
delimiter:分隔符
usecols:元组加载第六列和第七列
unpack:(True)分开存储
CSV(Comma Separated Value, 逗号分隔值)
AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800
0 1 2 3 4 5 6 7
代码,日期,空,开盘价,最高价,最低价,收盘价,日成交量
'''
七numpy绘图
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(12)
print(a)
# b = np.floor(np.random.rand(12)*5)
b = 2*a + np.floor(np.random.rand(12)*5)
print(b)
plt.scatter(a,b)
plt.show()