1.通常Numpy数组中的所有元素的类型都是相同的
2.使用Numpy方法
import numpy as np
my_array=np.array([l,2,3J4,5])
my_array
array([1,2, 3,4,5])
https://numpy.org/doc/stable/reference/index.html
3.Numpy提供了两种数据结构,多维数组和矩阵
一、多维数组ndarray
1.使用a range函数创建向量
vec = np.arange(10) #默认从0开始生成数据,10结束,不包括10,默认间隔为1
vec
array([0,1,2, 3,4, 5, 6,7, 8, 9])
arange遵循左闭右开的原则,如果不指定起始数值,默认从0开始生成数据,默认间隔为1,10不 包括在内;
vec*10=array([0,10,20,30,40,50,60,70,80,90])
等差数列
np.li nspace (1,19,10) #10表示生成的样本的数量
array([ 1., 3., 5., 7., 9., 11., 13., 15., 17., 19.])
np. arange(l ,19,2) #2 表示间隔;
array([ 1, 3, 5, 7, 9, 11, 13, 15, 17])
•全零向量
np.zeros(20,np.int)
array([0, 0, 0, 0f 0, 0, 0f 0, 0, 0, 0, 0, 0, 0, 0f 0, 0, 0, 0, 0])
•全1向量
np.ones(20,np.int)
arrays, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1])
-随机数向量
np.random.randn(10)
numpy.random.randn(d0,d1,..„dn)(dn表示每个维度元素的个数);
np.random.randn(2,3) #二维,第一维度由两个元素,第二维度有三个元素
numpy.random.randint(low, high=None, size=None, dtype)
返回随机整数,范围区间为[low,high),包含low,不包含high
参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的int 类型是np.int, high没有填写时,默认生成随机数的范围是[0, low)
2.ndarray索引与切片
Python序列切片地址可以写为==[开始:结束:步长]==,其中的开始和结束如果省略,默认就是整个序 列;步长如果省略,默认步长=1。
使用[ ]进行数组的索弓I和切片(截取);使用:分隔起始位置、结 束位置与间隔;使用,表示不同的维度
3.
使用reshape创建多维数组
b=np.arange(24).reshape(2,3,4) #想象生成的是一个魔方,2代表这个魔方有两层;3代表每层有3 行,4代表每行有4列;总共24个元素;把arange生成的一维数组变成了3维数组,每个维度的元素个数分别是 2, 3, 4;所以我们看到的下面的结果里,首先是3层中括号,表示了3维; 各维索引都从0开始
array(==[[[== 0, 1, 2, 3],
,[4, 5, 6, 7],
,[8, 9,10,11]],
,[[12,13,14,15],
,[16,17,18,19],
,[20,21,22,23]]])
4.
逻辑索引是指:允许提供一个和用于检索的数据相同长度的布尔数组,原数组和布尔数组长度相等,元 素——对应。此时,取布尔数组为True的对应的原数组的元素构成的集合作为结果。
c=np.arange(1,20,1)
c>=15
array([False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True,True])
既可以使用不等于符号(!=),也可以通过符号(-)对条件进行否定,可以使用&(和),I (或)之类的布尔算数运算符,但python的关键字and和or在布尔型数组中无效
二、矩阵
1.可以使用mat或matrix函数将数组转换为矩阵。
matl=[[l,2,3],[4,5,6]] #这是一个2维数组;类型是list
np.mat(matl)
matrix([[1,2, 3],
,[4 5, 6]])
matl=[[l,2,3],[4,5,6]] #这是一个2维数组;类型是 1 ist
mat2=np.mat([[l,2,3], [4,5,6] , [7,8,9]]) #mat2是matrix
matl*mat2 #左边是list,右边是matrix,可以进行矩阵乘法;
matrix([[30, 36, 42],
,[66,81,96]])
但左右均是list不可进行矩阵乘法
2.矩阵转置
mat2=np.mat([[1,2,3],[4,5,6],[7,8,9]])
mat2.T
matrix([[1,4f 7],
,[2, 5, 8],
,[3, 6, 9]])
3.对角矩阵
al=[l,2,3]
a2=np.mat(np.diag(al))
matrix([[1, 0, 0], , [0, 2, 0],
, [0, 0, 3]])
array是一个1维数组时,结果形成一个以一维数组为对角线元素的矩阵 #array是一个二维矩阵时,结果输出矩阵的对角线元素
a = np.arange(1, 4)
b = np.arange(1, 10) . reshape(3,3)
np.diag(a)
array([[1, 0, 0], [0, 2, 0], [0, 0, 3]])
np.diag(b)
array([1, 5, 9])
生成全0矩阵
mat3=np.mat(np.zeros((3,3)))