2.numpy的简单使用

本文详细介绍了NumPy库中ndarray对象的基础属性、创建方法,包括一维和二维数组,以及随机数生成、计算功能如求和、最大值、矩阵运算等。还涵盖了索引选择、遍历和数组分割等内容。
摘要由CSDN通过智能技术生成

矩阵和列表的输出的区别在于,矩阵的输出没有逗号分割

一、ndarray的基本属性
arr = np.array([1,3,4])
print(arr)  
print(arr.ndim) # 维度
print(arr.shape) # 形状
print(arr.size) # 共计多少个元素位
二、ndarray的创建
a = np.array([1,2,3],dtype = np.float64) # 一维列表创建,并指明数据类型
b = np.array([[1,2,6],
              [3,4,5]]) # 二维列表创建

c = np.zeros((3,4))  # 生成3行*4列的0矩阵

d = np.empty((3,4))  # 生成3行*4列的空矩阵

e = np.arange(0, 12).reshape((3,4)) # 用0~11共计12个数,生成3行*4列的矩阵

f = np.arange(10,20,2) # 用10, 12, 14, 16, 18生成一维矩阵

g = np.linspace(0, 10, 100,endpoint=True) # 0~10之间等分100份的一维矩阵
  • np.arange(start, end,step): 从start到end以step为步长生成一维矩阵
  • reshape((a, b)): 将ndarray重新排列成a * b的矩阵
  • np.linspace(start, end, num): 生成start 到 end分num份的一维矩阵
三、随机数矩阵
  1. 生成0~1之间的均匀分布的数组

    np.random.random( (4, 3) ) # 维度以元组的形式给出
    np.random.ranf( (43) ) # 维度以元组形式给出
    	## (1, 4) 和 (4) 并不相同,前者是二维矩阵,后者是一维
    np.random.rand(2,3,4) # 维度直接以数字给出
    np.random.uniform(low=x, high=y, size=(a, b, c))
    	# 生成x ,y之间的,维度为a*b*c的均匀分布
    
  2. 生成标准正态数组

    np.random.randn(2, 3, 4) # 生成一个2*3*4的服从正态分布的数组
    
  3. 生成随机整数

    np.random,randint(low=x, high=y, size=(a, b,c))
    	# low 和 high 指定范围
        # size用来声明矩阵的维度
    
  4. 从数组中选择数据生成随机数

    a = np.random.choice(ls = [3,5,6],
                         size=(2,3,4),
                         p=[0.1,0.5,0.4])
    		# 从列表中选择数据,每个数据依照p的概率生成size大小的随机数
    
四、 ndarray的计算
b = [
    	[1, 2, 3, 4],
    	[5, 6, 7, 8],
    	[9, 10, 11, 12]
	]
a = np.array(b) # 生成一个二维矩阵
a.T # a的转置
a.flatten() # 将a矩阵按行优先排列为一维矩阵
a.copy() # 复制a的副本

np.sum(a) # 所有数据的和 = 78
np.sum(a, axis = 1) # 每一行的和 = [10 26 42]
np.sum(a, axis = 0) # 每一列的和 = [15 18 21 24]

np.max(a) # 输出最大值 = 12
np.max(a, axis = 1) # 每一行的最大值 [4 8 12]
np.max(a, axis = 0) # 每一列的最大值 [ 9 10 11 12]
	# np.min同max相同用法
    
c = np.array([[0, 1, 2, 3],
              [4, 5, 6, 7],
              [8, 9, 10, 11]])
a + c # 同型矩阵可以相加减 = [[ 1  3  5  7]
 	  #                    [ 9 11 13 15]
      #                    [17 19 21 23]]

np.sin(a) # 对矩阵每个元素进行sin运算
np.exp(a) # 对矩阵每个元素进行指数运算
x.dot(y) # 矩阵x*矩阵y

部分数学函数见:数学函数(Mathematical functions) | NumPy

五、ndarray 的常见使用
a = np.arange(12).reshape((3,4)) # 生成一个矩阵
 		#[
    	#	[ 0  1  2  3]
 		#	[ 4  5  6  7]
 		#	[ 8  9 10 11]
        #]
# 索引选择
a[0,:] 或 a[0] # 选择第一行 = [0 1 2 3]
a[:, 0] # 选择第一列 = [0 4 8]
a[0][0] # 选择矩阵的第一行第一列的元素 = 0

# 可遍历
for row in a: # 按行遍历, 每个row是a的行
    print(row)

# 可分割
np.vsplit(a, 3) # 按列分割成三份
          # [
    	  #		array([[0, 1, 2, 3]]), 
    	  #  	array([[4, 5, 6, 7]]), 
          #  	array([[ 8,  9, 10, 11]])
          # ]      
np.hsplit(a, 2) # 按行分割成两份
        #[array([[0, 1],
        #        [4, 5],
        #        [8, 9]]), 
        # array([[ 2,  3],
        #        [ 6,  7],
        #        [10, 11]])]

持续更新ing

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啥都想学的大学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值