python提高篇(一)Numpy

Numpy数组
一·. 创建Numpy数组(array()函数)

from numpy import *
a = array([2,3,4])
b = zeros((3,4))                     #创建一个全为0的3行4列的数组
c = ones((2,3))                      #创建一个全为1的2行3列的数组
d = array([1,1, 1,4, 2,2])
d.dtype                              #输出dtype('float64')

arange()函数
通过指定开始值,终值,步长来创建一维数组(数组不包括终值)

import numpy as np
np.arange(0,10,2)               #步长为2
np.array(range(0,10,2)          #两个输出结果均为[0,2,4,6,8]
np.arange(0,10).reshape((2,5))  #输出结果为[[0,1,2,3,4],[5,6,7,8,9]]     以2行5列的矩阵展现

linspace函数

import numpy as np
>>>np.linsapce(0,1,5)               #元素个数为5
array([0.,0.25,0.5,0.75,1.])

二. Numpy数组的访问

import numpy as np
a = np.arange(7)        #array([0,1,2,3,4,5,6])
a[5]                     #5
a[3:6]                   #前闭后开array([3,4,5])
a[:5]                    #array([0,1,2,3,4])
a[:-1]                   #下标可用负数,表示从后往前数 array([0,1,2,3,4,5])
a [2:4] = 11,22          #修改元素的值 array([0,1,11,22,4,5,6]
a[1:-1:2]                #2表示步长,array([1,22,5])
a[5:1:-2]                #步长为负数时需开始下标大于结束下标,array([5,22])

二维数组的访问

import numpy as np
b = np.array([[0,1,2,3],
             [10,11,12,13],
             [20,21,22,23],
             [30,31,32,33]])
b[2,3]                  #与b[2][3]效果相同,输出23
b[0:4,1]                #第二列的所有数,输出array([1,11,21,31])
b[:,1]                  #同上
b[1,:]                  #第二行的所有数,输出array([10,11,12,13])
b[1:3,:]                #每列的第二和第三个元素,输出array([10,11,12,13],[20,21,22,23])
          

三. Numpy数组的算术运算

import numpy as np
x = np.arange(0,np.pi/2,0.1)
y = np.sin(x)                                   #输出结果为x对应值的三角函数
a = np.array([20,30,40,50])
b = np.arange(4)
c = a - b
print(c)
d = b ** 2
print(d)
a < 35

输出结果

array([20,29,38,47])
array([0,1,4,9])
array([Ture,Ture,False,False], dtype = bool)

相乘

import numpy as np
A = np.array([[1,1],[0,1]])
B = np.array([[2,0],[3,4]])
print(A * B)                            #逐个元素相乘
C = np.dot(A,B)                         #矩阵相乘
print(C)

输出结果

array([[2,0],[0,4]])
array([5,4],[3,4]])
a= np.random.random((2*3))      #随机生成2*3的小数数组
print(a)
a.sum()                         #所有矩阵中的元素求和
a.min()                         #所有矩阵中元素的最小值
a.max()                         #所有矩阵中元素的最大值
a.sort()                        #排序

输出

array([[0.86725, 0.48462, 0.03524], 
       [0.14528, 0.93601, 0.72531]])
3.19371                   #sum
0.03524                   #min
0.93601                   #max
array([[0.03524, 0.48462, 0.86725]
       [0.14528, 0.72531, 0.93601]])         #sort

通过指定axis参数(即数组的微)对指定的轴做相应的运算:

>>>b = np.arange(12).reshape(3,4)
>>>b
array([[0, 1, 2, 3],
       [4, 5, 6, 7],
       [8, 9, 10, 11]])
>>>b.sum(axis = 0)              #计算每一列的和
array([12, 15, 18, 21])
>>>b.min(axis = 1)              #获取每一行的最小值
array([0, 4, 8])
>>>b.cumsum(axis = 1)           #计算每一行的累加和
array([[0, 1, 3, 6],
       [4, 9, 15, 22],
       [8, 17, 27, 38]])
>>>np.medium(b)                 #返回中位数
5.5       
>>>np.mean(b)                   #返回平均数
5.5
>>>np.transpose(b)              #对数组转置
array([[0, 4, 8],
       [1, 9, 17],
       [3, 15, 27],
       [6, 22, 38]])
>>>b.resize((3,4))             #改变为3*4的数组形状
>>>b
array([[0, 1, 3, 6],
       [4, 9, 15, 22],
       [8, 17, 27, 38]])

四. Numpy中的矩阵对象
Numpy模块库中的矩阵对象为numpy.matrix,包括矩阵数据的处理,矩阵的计算以及基本的统计功能、转置、可逆性等,还包括对复数的处理均在matrix对象中。

>>>a = np.matrix('1 2 7; 3 4 8; 5 6 9')       #矩阵换行必须用“;”隔开,矩阵之间的元素必须用空格隔开
>>>a
matrix([[1,2,7],
        [3,4,8],
        [5,6,9]])
>>>b = np.array([[1,5],[3,2]])
>>>x = np.matrix(b)
>>>x
matrix([[1,5],[3,2]])

矩阵对象的属性如下:
matrix .T(transpose):返回矩阵的转置矩阵
matrix.H(conjugate):返回复数矩阵的共轭元素矩阵
matrix.I(inverse):返回矩阵的逆矩阵
matrix.A(base array):返回矩阵基于的数ump

五.数组的操作
1.添加numpy.append

import numpy as np
a = np.array([1,2,3],[4,5,6])
b = np.append(a, [7,8,9])         #array([1,2,3,4,5,6,7,8,9])
b = np.append(a, [7,8,9],axis = 0)   #行增加,array([[1,2,3],[4,5,6],[7,8,9]])
b = np.append(a, [7,8,9],[10,11,12],axis = 1)   #列增加,array([[1 2 3 7 8 9] [4 5 6 10 11 12]])

2.数组的插入(删除同理)

import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
c = np.insert(a,1,[11],axis = 0)    #array([[1,2],[11,11],[3,4],[5,6]])
c = np.insert(a,1,[11],axis = 1)    #array([[1,11,2],[3,11,4],[5,11,6]])

创建一个5x5矩阵,值为1、2、3、4,位于对角线下方

Z = np.diag(1+np.arange(4),k=-1)      #k=-1表示对角线下移一行
print(Z)

在这里插入图片描述

numpy.unravel_index()函数的作用是获取一个/组int类型的索引值在一个多维数组中的位置。
考虑一个(6,7,8)形状的数组,第100个元素的下标(x,y,z)是什么?

print(np.unravel_index(99,(6,7,8)))       #np.unravel_index(索引值,数组形状)

np.tile() 将原矩阵横向,纵向地复制

Z = np.tile( np.array([[0,1],[1,0]]), (4,4)      #数组[0,1],[1,0]在列方向,行方向重复4次
print(Z)

np.random.randint()函数的作用是,返回一个随机整型数(min,max,size)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值