numpy基础

1、导入numpy库

#导入numpy库(as 别名)
import numpy as np

2、创建numpy数组

#创建一维数组(与列表不同之处在于,数组中的元素必须为同一类型,列表中的元素可以为不同类型)
arr1 = np.array([1,2,3])#array将各种数据类型转变为数组
arr1
#创建二维数组
arr2 = np.array([[1,2,3],[4,5,6]])
arr2

3、数组的属性

#数组的属性
#ndim返回数组的维度
print(arr1.ndim)
print(arr2.ndim)
#shape返回一个元组,(第一个维度的元素的个数,第二个维度的元素的个数。。。。)
print(arr1.shape)
print(arr2.shape)
#size返回数组里面元素的总个数
print(arr1.size)
print(arr2.size)
#dtype返回数组元素的类型
print(arr1.dtype)
print(arr2.dtype)
#创建元素全部为0的数组
np.zeros(3)
#创建元素全部为1的数组
np.ones(5)
#创建元素为数字序列的数组(np.arange(起始值,结束值,步长))
np.arange(5,10,2)#左闭右开

4、练习1

#1、写出导入numpy的语句,并且给numpy别名为np
import numpy as np
#2、创建一个变量名为arr1的一维数组,里面的元素为整数6,2,-7,2,8,-2,1。创建后输出arr1。
import numpy as np
arr1 = np.array([6,2,-7,2,8,-2,1])
arr1
#3、创建一个变量名为arr2的二维数组,里面的元素为以下两个数组:由整数1、3、5组成的一维数组,以及由整数2、4、6组成的一维数组。创建后输出arr2。
import numpy as np
arr2 = np.array([[1,3,5],[2,4,6]])
arr2
#4、分别打印arr1和arr2的维度、形状、元素数量、元素类型
print(arr1.ndim)
print(arr2.ndim)
print(arr1.shape)
print(arr2.shape)
print(arr1.size)
print(arr2.size)
print(arr1.dtype)
print(arr2.dtype)
#5、创建一个变量名为arr_all_0的一维数组,里面的元素为6个0,并输出
import numpy as np
arr_all_0 = np.zeros(6)
arr_all_0
#6、创建一个变量名为arr_all_1的一维数组,里面的元素为6个1,并输出。
import numpy as np
arr_all_1 = np.ones(6)
arr_all_1
#7、创建一个变量名为arr_even的一维数组,里面的元素为10(包括10)到20(包括20)之间的偶数,并输出。
import numpy as np
arr_even = np.arange(10,21,2)
arr_even

5、连接数组

#连接数组(np.concatenate(arr1,arr2....))
import numpy as np
arr1 = np.array([5,17,3,26,31])
arr2 = np.zeros(3)
arr3 = np.ones(3)
np.concatenate([arr1,arr2,arr3])
#水平连接:hstack(A,B),要求行数相同
#垂直连接:vstack(A,B),要求列数相同
A = np.array([[1,2],[3,4]])
B = np.array([[3,5],[5,7]])
C = np.hstack((A,B))#2行4列
C
D = np.vstack((A,B))#4行2列
D

6、数组排序

#数组的排序
#sort函数(不改变原数组)
import numpy as np
arr1 = np.array([5,17,3,26,31])
print(np.sort(arr1))
print(arr1)
#sort方法(改变原数组)
import numpy as np
arr1 = np.array([5,17,3,26,31])
print(arr1.sort())
print(arr1)

7、用索引获得数组元素

#用索引获得元素
arr1[0]#获得arr1里的第一个值
arr1[-2]#获得arr1里的倒数第二个值
arr1[1:4]#获得arr1里的第二到第四的值(左闭右开)

8、数组和数组进行运算

#数组和数组进行运算
#加减乘除(两个数组长度必须相同)
arr1+arr2#数组中对应位置元素相加
arr1-arr2#数组中对应位置元素相减
arr1×arr2#数组中对应位置元素相乘
arr1/arr2#数组中对应位置元素相除
#广播机制
arr1*3#将数组中的每个元素乘以3
#聚合运算
arr1.max()#最大值
arr1.min()#最小值
arr1.sum()#和
arr1.mean()#平均值
#根据条件筛选数组元素
arr[arr > 6]#返回数组中所有大于6的元素
#逻辑运算(与:&(python中为and)  或:|(python中为or)  非:~(python中为not))
arr[(arr > 6)&(arr < 10)]#返回数组中所有大于6且小于10的数组元素

9、练习2

#1、创建arr1为包含了元素1、3、2、4、9的数组,创建arr2为长度为5的由1组成的一维数组,arr3为长度为3的由0组成的一维数组
import numpy as np
arr1 = np.array([1,3,2,4,9])
arr2 = np.ones(5)
arr3 = np.zeros(3)
#2、创建数组arr4,包括所有arr1、arr2、arr3里面的数字,并输出。
arr4 = np.concatenate([arr1,arr2,arr3])
#3、更改arr1,对arr1里的元素进行排序,并输出排序后的结果。
arr1.sort()
arr1
#4、用两种方法打印arr1的第三个元素。
print(arr1[2])
print(arr1[-2])
#5、输出arr1第2个元素到第四个元素组成的数组。
print(arr1[1:4])
#6、输出arr1与arr2的同位置元素相加后组成的数组。
print(arr1+arr2)
#7、输出arr1的各个元素乘以-5后组成的数组
print(arr1*-5)
#8、打印arr1数组的最大值、最小值、和、平均值。
print(arr1.max())
print(arr1.min())
print(arr1.sum())
print(arr1.mean())
#9、筛选出arr1数组里所有小于5或大于2的数字,并打印出来。
print(arr1[(arr1 < 5)|(arr1 > 2)])

10、数组形态转变

#reshape方法用于改变数组的形状,reshape方法仅改变原始数据的形状,不改变原始数据的值。
import numpy as np
arr = np.arange(12)  # 创建一维ndarray
arr1 = arr.reshape(3, 4)  # 设置ndarray的维度,改变其形态(3行4列)
arr1

11、矩阵操作

#矩阵操作
#Numpy中可使用mat、matrix或bmat函数来创建矩阵。使用mat函数创建矩阵时,若输入matrix或ndarray对象,则不会为它们创建副本。
#因此,调用mat函数与调用matrix(data, copy=False)等价。
import numpy as np
import numpy as np  
mat1 = np.mat("1 2 3; 4 5 6; 7 8 9") #分号代表换行
mat2 = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
mat1
mat2
#bmat分块矩阵函数
arr1 = np.eye(3)#返回三维的单位矩阵E
arr2 = 3*arr1#将矩阵中的各个元素乘以3
mat = np.bmat("arr1 arr2;arr1 arr2")
mat
#矩阵的属性和基本运算
#T:返回自身的转置  H:返回自身的共轭转置  I:返回自身的逆矩阵
import numpy as np
mat = np.matrix(np.arange(4).reshape(2, 2))#生成一个2×2的矩阵
mT=mat.T#转置
mH=mat.H#共轭转置
mI=mat.I#逆矩阵
#矩阵的加减乘点乘
import numpy as np
mat1 = np.mat("1 2 3; 4 5 6; 7 8 9")
mat2 = mat1*3
mat3=mat1+mat2
mat4=mat1-mat2
mat5=mat1*mat2
mat6=np.multiply(mat1, mat2) #点乘

12、线性代数运算

#线性代数运算(numpy.linalg模块)
#dot:矩阵相乘 inv:求逆矩阵 solve:求解线性方程组Ax=b eig:求特征值和特征向量 eigvals:求特征值 svd:计算奇异值分解 det:求行列式
import numpy as np
mat = np.mat("1 1 1; 1 2 3; 1 3 6")
inverse = np.linalg.inv(mat)#求逆矩阵
A=np.dot(mat, inverse)#矩阵相乘

A = np.mat("1,-1,1; 2,1,0; 2,1,-1")
b = np.array([4, 3, -1])
x = np.linalg.solve(A, b)#线性方程组Ax=b的解

A = np.matrix([[1, 0, 2], [0, 3, 0], [2, 0, 1]])
A_value= np.linalg.eigvals(A)#求特征值
A_value, A_vector = np.linalg.eig(A)#求特征值和特征向量

A = np.mat("3,4; 5,6")
A_value=np.linalg.det(A)#求行列式

13、练习3

# 1、创建一个Python脚本,命名为test1.py,完成以下功能:
# 定义一个列表list1=[1,2,4,6,7,8],将其转化为数组N1
import numpy as np
list1 = [1,2,4,6,7,8]
N1 = np.array(list1)
# 定义一个元组tup1=(1,2,3,4,5,6),将其转化为数组N2
tup1 = (1,2,3,4,5,6)
N2 = np.array(tup1)
# 利用内置函数,定义一个1行6列元素全为1的数组N3
N3 = np.ones(6)
# 将N1,N2,N3垂直连接,形成一个3行6列的二维数组N4
N4 = np.vstack((N1,N2,N3))
# 2、创建一个Python脚本,命名为test2.py,完成以下功能:
# 提取N4第1行中的第2、4个元素,第3行中的第1、5个元素,组成一个新的二维数组N5
list2 = [N4[0][1],N4[0][3],N4[2][0],N4[2][4]]
N5 = np.array(list2)
# 将N5与练习1中的N1进行水平合并,生成一个新的二维数组N6。
N6 = np.hstack(N1,N5)
# 3、创建一个Python脚本,命名为test3.py,完成以下功能:
# (1)生成两个2×2矩阵,并计算矩阵的乘积。
mat1 = np.mat("1 2;3 4")
mat2 = np.matrix([[2,4],[4,5]])
mat3 = mat1*mat2
print(mat3)
# (2)求矩阵的特征值和特征向量。
A_value, A_vector = np.linalg.eig(mat3)
print(f"特征值为:{A_value}")
print(f"特征向量为:{A_vector}")
# (3)设有行列式 ,求其转置行列式 ,并计算和 。
mat4 = mat3.T
mat_value = np.linalg.det(mat4)
print(f"转置行列式为:{mat_value}")
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值