windows下安装
pip install numpy
官方文档:https://docs.scipy.org/doc/numpy/user/quickstart.html
引入
import numpy as np
1.创建
# 一维数组
dat=[6,7,8,0,1]
arr1=np.array(dat)
print(arr1)
# 多维数组
dat2=[[1,2,3,4],[5,6,7,8]]
arr2=np.array(dat2)
print(arr2)
# dtype 数据类型
arr2.dtype
# shape 属性
arr2.shape
# 创建时可以指定数据类型
arr3=np.array(dat2,dtype=np.int64)
print(arr3)
print(arr3.dtype)
dat3=[6,7.5,9,0,1]
arr4=np.array(dat3)
print(arr4)
print(arr4.dtype)
# astype 类型转换
arr4.astype(np.int64)
# ones 生成全1的数组
np.ones(10)
# zeros
np.zeros(10)
# 二维
np.zeros((3,6))
2.运算
# 数组和标量之间的运算
nd=np.array([1,2,3,4])
print(nd)
print(nd*2) # 乘法1
print(nd*nd) # 自己*自己
print(nd+nd) # 相加
print(1/nd) # 倒数
3.索引和切片
# 基本的索引和切片
# arange:range函数的数组版
np.arange(10)
nd1=np.arange(1,20,2) # 起点1 最大值20 步长2
print(nd1)
# 切片
print(nd1[5])
print(nd1[2:5]) # 索引未2,3,4 不包括5
# 索引赋值
nd1[2:5]=10 # 这部分元素都被赋值为10
print(nd1)
nd1[2:5]=[2,3,4] # 3个元素分别赋值 这里3个元素 如果单个赋值 不可以只有2个
print(nd1)
dat3=[[1,2,3,4,5],[2,3,4,5,6]]
nd2=np.array(dat3)
print(nd2)
nd2[0]=1 # 二维数组的第一个数组中的元素全部赋值为1
print(nd2)
print(nd2[0,3]) # 第一行第四列的焦点
4.花式索引
# 花式索引
nd=np.arange(32)
print(nd)
# reshape
nd1=np.reshape(nd,(8,4)) # 把数组变成8行4列的数组的二维数组
print(nd1)
print(nd1[[1,2,3]]) # 花式取多个索引 分别取索引未1,2,3的行
# 选取多行 多列交叉处的元素
print(nd1[[1,5,7,2],[0,3,1,2]]) # 取1,0 5,3 7,1 2,2这几个元素
# 获取矩形区域:方法1
print(nd1[[1,5]][:,[1,2]]) # 取行索引为1和5 列索引为1和2的 的交叉点集合
# 获取矩形区域:方法2 np.ix_
print(nd1[np.ix_([1,5,7,2],[0,3,1,2])]) # 取行索引为1 5 7 2 列索引为 0 3 1 2的交叉点集合
5.通用函数ufunc
# 通用函数ufunc
arr=np.arange(10)
print(arr)
# 开根号
print(np.sqrt(arr)) # 针对每个元素开根号
# 相加
b=np.arange(3)
c=np.array([2,-1,4])
print(b)
print(c)
print(np.add(b,c)) # 各自相同索引的元素相加
# 求最大值
print(np.maximum(b,c)) # 取各自相同索引下的最大的元素 形成新的数组
5.常用数学和统计方法
# 常用数学和统计方法
# 一维数组
arr=np.random.randn(9) # 随机生成9个元素的数组
print(arr)
# 最小值
print(arr.min())
#最大值
print(arr.max())
# 平均值
print(arr.mean())
# 求和
print(arr.sum())
# 排序
arr.sort()
print(arr)
# 二维数组
arr1=np.random.randn(5,3)
print(arr1)
# 最小值
print(arr1.min()) # 所有行列中的最小值
# 最大值
print(arr1.max()) # 所有行列中的最大值
# 平均值
print(arr1.mean()) # 所有的平均值
# 排序
arr1.sort() # 每行各自进行排序
print(arr1)
# 按列排序
arr1.sort(axis=0) # 每行各自进行排序
print(arr1)
# 等分端点
print(np.linspace(0,10,2)) # 0-10中 2代表分为两个端点
print(np.linspace(0,10,5)) # 0-10中 5代表5个端点 把他分为4等分
print(np.linspace(0,10,11)) # 0-10之间 中间差值一样的11个数 包行 0 和10
6.线性代数
# 线性代数
x=np.array([[1,2,3],[4,5,6]])
print(x)
y=np.array([[6,23],[-1,7],[8,9]])
print(y)
# 乘法 线性代数特点:x行数必须等于y列数
print(x.dot(y)) #用x去左乘y
from numpy.linalg import inv
m=np.array([[4,2],[3,1]])
print(m)
# 逆矩阵
print(inv(m))
7.随机数生成
# 随机数生成
from numpy import random
#normal
rArray=random.normal(size=(4,4)) #normal 随机生成矩阵,服从正太分布
print(rArray)
#randit 产生给定上下限范围内的随机选取整数
print(random.randint(0,2))
i=0
while i<20:
print(random.randint(0,2),end= ' ')
i=i+1