numpy常用操作


numpy是python的基础,与tensorflow关系密切。在使用numpy之前需要到导入numpy 模块:

import numpy as np

1. 生成ndarray的集中方式

1.1从已有的数据中创建

import numpy as np
list1=[1,2,3,4]
#<class 'list'>
print(type(list1))
nd1=np.array(list1)
#[1 2 3 4],<class 'numpy.ndarray'>
print(nd1)
print(type(nd1))

第一个print(type())输出是list类型,第二个是numpy.ndarray类型

1.2利用random模块生成ndarray

下面介绍几个常用的函数:
1.random():生成0-1的随机数;
2.uniform():生成均匀分布的随机数;
3.randn():标准正态分布函数;
4.seed():设置随机数种子;(当想产生相同数时,只需seed数一样即可)
下面展示实例:

import numpy as np
#生成3*3的介于0-1矩阵,
nd=np.random.random([3,3])
print(nd)
import numpy as np
#设置随机种子数为123,
np.random.seed(123)
nd=np.random.randn(2,3)
print(nd)
#打乱nd
np.random.shuffle(nd)
print(nd)

输出为:[[-1.0856306 0.99734545 0.2829785 ]
[-1.50629471 -0.57860025 1.65143654]]

[[-1.50629471 -0.57860025 1.65143654]
[-1.0856306 0.99734545 0.2829785 ]]

1.3创建特定形状的多维数组

import numpy as np
#创建全是1的3**3矩阵
nd1=np.ones([3,3])
#创建全是0的3*3矩阵
nd2=np.zeros([3,3])
#创建3阶单位矩阵
nd3=np.eye(3)

1.4利用arange函数

import numpy as np
nd1=np.arange(25).reshape(5,5)
print(nd1)

输出:[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
注意:利用np.arange(n).reshape(x,y)时,创建的矩阵大小应全包含n,不能大于或者小于n。即:n=x*y;

2.存取元素

下面介绍几个读取元素例子:

import numpy as np
np.random.seed(123)
nd1=np.random.random([10])
#输出第三个数
print(nd1[3])
#输出1-3
print(nd1[1:3])
#输出1-6,其中步长为2
print(nd1[1:6:2])
#倒序输出,步长为2
print(nd1[::-2])
nd2=np.arange(25).reshape(5,5)
#输出1-2行和1-2列
print(nd2[1:3,1:3])
#输出nd2中大于5,小于10的数
print(nd2[(nd2>5)&(nd2<10)])

以上是通过指定索引标签,还有一些其他的方法,例如random.choice()

import numpy as np
from numpy import random as nr
np.random.seed(123)
nd1=np.arange(1,25,dtype=float)
#从nd1从随机抽取一个3*4的矩阵,可重复
c1=nr.choice(nd1,size=(3,4))
#不可重复
c2=nr.choice(nd1,size=(3,4),replace=False)
print(c1)

3.矩阵操作

import numpy as np
nd1=np.arange(9).reshape(3,3)
#求矩阵转置
print(np.transpose(nd1))
a=np.arange(12).reshape(3,4)
b=np.arange(8).reshape(4,2)
#矩阵相乘
print(a.dot(b))
#矩阵的a的迹
print(a.trace())
c=np.random.random([3,3])
#求c的逆
print(np.linalg.solve(c,np.eye(3)))

以上为求矩阵的转置,两个矩阵相乘,求矩阵的迹和逆,numpy.linalg模块中还有一些其他的函数:

  1. diag:以一维数组方式返回方阵的对角线元素
  2. dot:矩阵乘法
  3. inv:计算方阵的逆
  4. qr:计算qr分解
  5. lstsq:计算Ax=b的最小二乘法

4.数据合并与展平

4.1 合并一维数组

利用np.append()函数实现两个数组合并

import numpy as np
a=np.array([1,2,3])
b=np.array([4,5,6])
c=np.append(a,b)
print(c)

输出:[1 2 3 4 5 6]

4.2 多维数组合并

np.append(a,b,axis),其中axis=0,按列合并,axis=1,按行排列

import numpy as np
a=np.arange(4).reshape(2,2)
b=np.arange(4).reshape(2,2)
#按列合并
c=np.append(a,b,axis=0)
print(c)
#按行合并
d=np.append(a,b,axis=1)
print(d)

输出:[[0 1]
[2 3]
[0 1]
[2 3]]
[[0 1 0 1]
[2 3 2 3]]

4.3矩阵展平

使用ravel()函数,ravel(‘F’)按列展开,ravel()按行展开

import numpy as np
#reshape(2,-1),其中-1表示自动填充,生成一个2维的矩阵
a=np.arange(6).reshape(2,-1)
print(a)
print(a.ravel('F'))
print(a.ravel())

输出:[[0 1 2]
[3 4 5]]
[0 3 1 4 2 5]
[0 1 2 3 4 5]

5.广播机制

广播机制的功能是为了方便不同shape的数组进行数学运算

import numpy as np
a=np.arange(10)
b=np.arange(10)
print(a+b)
print(a+3)
print(a*b)
c=np.arange(10).reshape(5,2)
d=np.arange(2).reshape(1,2)
print(c+d)

输出:[ 0 2 4 6 8 10 12 14 16 18]
[ 3 4 5 6 7 8 9 10 11 12]
[ 0 1 4 9 16 25 36 49 64 81]
[[ 0 2]
[ 2 4]
[ 4 6]
[ 6 8]
[ 8 10]]
a+b,ab,a+3是将对应位置相加/乘,也可以与一个常数相加。
c,d是不同维的数组,先将数组d复制扩充为5
2的矩阵,每一行都是[0,1],然后再与c对应元素相加。


以上为numpy的基础知识,以上内容为学习时所做总结,只供学习使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值