一、基本概念
NumPy Ndarray 对象
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
1、numpy.ndarray中数据类型都是统一的
vector = np.array([1, 2, 3, 4.0])
vector
image.png
二、构建矩阵:返回数组或随机数组
1.np.array
# 构造一个 ndarray
matrix = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
matrix
image.png
2.np.full快捷填充
np.full([3,4],1)
输出:
image.png
vector=np.full([3,4],True)
vector
输出:
image.png
3.使用 arange 生成序列
np.arange(起点,终点,步长)
函数返回一个有终点和起点的固定步长的list。
参数个数情况: np.arange()函数分为一个参数,两个参数,三个参数三种情况
1)一个参数时,参数值为终点,起点取默认值0,步长取默认值1。
2)两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1。
3)三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数
a=np.arange(6)
a
b=np.arange(3,8)
b
c=np.arange(1,2,0.1)
c
image.png
**起始为10,5为步长,30为结尾取不到**
np.arange( 10, 30, 5 )
输出:
image.png
np.arange(10)
输出:
image.png
np.arange( 10 ).reshape(5,2)
输出:
image.png
4.numpy.random.random
np.random.random((m, n))
#生成m行、n列的浮点数,浮点数都是从0-1中随机。
输出:
image.png
5.numpy.resahpe
numpy中reshape方法详解
np.arange(a,newshape,order='C')
本来是有三个参数的,但order这个参数目前来看实在是不常用。用到了以后再行补充。
a:数组——需要处理的数据
newrange:新的格式——整数或整数数组,如(2,3)表示2行3列。新的形状应该与原来的形状兼容,即行数和列数相乘后等于a中元素的数量。如果是整数,则结果将是长度的一维数组,所以这个整数必须等于a中元素数量。若这里是一个整数数组,那么其中一个数据可以为-1。在这种情况下,这个个值python会自动从根据第二个数值和剩余维度推断出来。
首先构建一个list
list_a=np.arange(0,16)
list_a
用reshape函数重新排布:
list_b=np.reshape(list_a,(2,8))
list_b
或者
list_b=np.reshape(list_a,(4,4))
list_b
image.png
这种情况,在list_b中由于有一个参数未知需要填写需要传递的数据组,因此因此需要用双层括号表示newrange格式。
但是另一种情况,如果与其他函数连用,例如与前面提到的np.arange()连用,a的位置就可以直接省略了:
data1 = pd.DataFrame(
np.arange(0,16).reshape(4,4),columns=['a','b','c','d'])
data1
image.png
6.random.rand()
random.rand(维度,行,列)
image.png
7.创建一个等差数列数组
np.linspace用法介绍
语法:np.linspace( 起点, 终点,平均划分为多少个数据,endpoint=False)
endpoint参数设置最后一个数是否包含在该等差数列
# 平均划分
from numpy import pi
np.linspace( 0, 2*pi, 100 )
#此处pi对应圆周率
image.png
8.布尔索引
# 创建一个ndarray
vector = np.array([5, 10, 15, 20 ,10])
vector
#让这个ndarray与一个数值做判断,返回一个布尔结果
A=vector==15
A
#也可以与多个数值做判断
A=(vector==15)|(vector==20)
A
#构建一个ndarray
list_exa=np.random.rand(5,3)
list_exa
#索引:bool型数组的长度和被索引数组的高维维度一致。True为要截取的位置。
list_exa[A]
#切片
list_exa[A,1:2]
运行结果:
image.png
9.np.random.rand和np.random.randn
np.random.rand()函数
语法基本一致,区别在于:
np.random.randn()函数所产生的随机样本基本上取值主要在-1.96~+1.96之间,当然也不排除存在较大值的情形,只是概率较小而已。样本的取值满足一组服从标准正态分布的随机样本值。
而random.rand的取值则在[0,1)区间内。
np.random.randn(5)
np.random.rand(5)
输出结果:
image.png
np.random.randn(5,3)
np.random.rand(5,3)
image.png
10.np.random.randint
语法:
np.random.randint(low, high=None, size=None)
[low,high) #high不为None
[0,low)
size=number
size=(number,number)
#number为int
np.random.randint(4, size=9)
np.random.randint(4, size=(3,3))
输出结果:
image.png
三、数学计算
1、求和函数
martrix_1=np.arange(1,24,2).reshape(3,4)
np.sum(martrix_1)
martrix_1
np.sum(martrix_1)
np.sum(martrix_1,axis=1)
np.sum(martrix_1,axis=0)
输出结果:
image.png
2、幂函数
exp:高等数学里以自然常数e为底的指数函数
numpy.exp(x):返回e的x次幂,e是一个常数为2.71828
np.exp(1) #返回的结果为exp的一次方
np.exp(2) #返回的结果为exp的二次方
3、开平方根
np.sqrt(matrix)
image.png
4、多维变1维
matrix.ravel()
np.ravel(martrix_1)
输出结果:
image.png
5、矩阵扩展(目前觉得用到的可能极小,先不记)
a = np.arange(0, 40, 10)
b = np.tile(a, (3, 5))
b
image.png
6、矩阵拼接
horizontal 水平的
Vertical 垂直的
stack 堆叠
a=np.arange(1,24,2).reshape(4,3)
b=np.arange(4,27,2).reshape(4,3)
np.hstack((a,b)) #水平拼接
np.vstack((a,b)) #垂直拼接
np.hstack(a) #水平展开
输出结果:
image.png
a=np.arange(1,24,2).reshape(4,3)
np.vsplit(a,2)
np.vsplit(a,4)
np.hsplit(a,3)
image.png













网友评论