> 文章列表 > Python里Numpy基础知识

Python里Numpy基础知识

Python里Numpy基础知识

1.通常Numpy数组中的所有元素的类型都是相同的

2.使用Numpy方法

import numpy as np

my_array=np.array([l,2,3J4,5])

my_array

array([1,2, 3,4,5])

  • Numpy帮助文档

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]]) #mat2matrix

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)))