numpy的基本使用方法

#导入numpy
import numpy as np

#声明一个array,第一参数要用列表和列表中的列表,第二个参数dtype声明元素格式
array=np.array([[1,2,3],
              [2,3,4]],dtype=np.int64)
array.dtype
dtype('int64')
#维度
array.ndaim
2
#形状
array.shape//两行三列
(2, 3)
#数量
array.size//元素数量
6
#0矩阵
a=np.zeros((3,4))
a
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])
#单位矩阵
a=np.ones((3,4))
a
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])
#有序矩阵
a=np.arange(10,20,2)#从10到19,步长为2的有序数列
a
array([10, 12, 14, 16, 18])
#reshape:重新定义行和宽
a=np.arange(12).reshape(3,4)
a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
#linspace:生成线段矩阵
a=np.linspace(1,10,5)#矩阵元素从1到10,共有5个元素,每个元素之间间隔相等
a
array([ 1.  ,  3.25,  5.5 ,  7.75, 10.  ])
#nupy一维矩阵基础运算
a=np.array([10,20,30,40])
b=np.arange(4)
array([10, 19, 28, 37])
#减法
c=a-b
c
array([10, 19, 28, 37])
#加法
c=a+b
c
array([10, 21, 32, 43])
#平方
c=b**2
c
array([0, 1, 4, 9], dtype=int32)
#立方
c=b**3
c
array([ 0,  1,  8, 27], dtype=int32)
#三角函数sin cos tan
c=np.sin(a)#对a中的每个元素使用sin函数
c
array([-0.54402111,  0.91294525, -0.98803162,  0.74511316])
#判断矩阵中有那些元素满足条件
#返回一个列表,如果原先位置上的元素不符合条件则为false
b<3

array([ True,  True,  True, False])
#numpy二维矩阵运算
a=np.array([[1,1],
           [0,1]])
b=np.arange(4).reshape((2,2))
array([[0, 1],
       [2, 3]])
#二维矩阵的乘法有两种:一种是对应位置上的元素相乘,一种是符合矩阵乘法
c=a*b
c_dot=a.dot(b)
c_dot2=b.dot(a)
print(c)
print(c_dot)
print(c_dot2)
[[0 1]
 [0 3]]
[[2 4]
 [2 3]]
[[0 1]
 [2 5]]
#生成随机矩阵
a=np.random.random((2,4))
a
array([[0.12211839, 0.99464928, 0.56834017, 0.14783266],
       [0.31955459, 0.09813546, 0.36572719, 0.77154438]])
np.sum(a)#求和
3.387902131846119
np.min(a)#求最小值
0.09813546195219025
np.max(a)#求最大值
0.9946492833863441
np.sum(a,axis=1)#每一行单独求和
array([1.83294051, 1.55496162])
np.min(a,axis=1)#每一行单独求出最小值
array([0.12211839, 0.09813546])
np.max(a,axis=1)#每一行单独求出最大值
array([0.99464928, 0.77154438])
A=np.arange(2,14).reshape((3,4))
A
array([[ 2,  3,  4,  5],
       [ 6,  7,  8,  9],
       [10, 11, 12, 13]])
#输出最小值的索引
np.argmin(A)
0
#输出最大值的索引
np.argmax(A)
11
#计算平均值
np.mean(A)
np.average(A)
7.5
#按行计算平均值
np.mean(A,axis=1)
array([12.5,  8.5,  4.5])
#计算中位数
np.median(A)
7.5
#累加
np.cumsum(A)
array([ 2,  5,  9, 14, 20, 27, 35, 44, 54, 65, 77, 90], dtype=int32)
#累差,两个元素之间的差
np.diff(A)
array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]])
#找出非0的数
np.nonzero(A)#分别输出两列,一列是非零元素的横坐标,一列是非零元素的纵坐标
(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64),
 array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
#排序
A=np.arange(14,2,-1).reshape((3,4))
np.sort(A)
array([[11, 12, 13, 14],
       [ 7,  8,  9, 10],
       [ 3,  4,  5,  6]])
#转置
np.transpose(A)
A.T
array([[14, 10,  6],
       [13,  9,  5],
       [12,  8,  4],
       [11,  7,  3]])
#截取:小于最小值的数赋于最小值,大于最大值的数赋予最大值
np.clip(A,5,9)#参数分别为,矩阵,最小值,最大值
array([[9, 9, 9, 9],
       [9, 9, 8, 7],
       [6, 5, 5, 5]])
#numpy的索引
A=np.arange(3,15).reshape((3,4))
print(A)
A[1][1]#也可以用A[1,1]
[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]





12
A[1,:]#第二行的所有数
array([ 7,  8,  9, 10])
#迭代每一行
for row in A:
    print(row)
[3 4 5 6]
[ 7  8  9 10]
[11 12 13 14]
#迭代每一列,先将A转置
for col in A.T:
    print(col)
[ 3  7 11]
[ 4  8 12]
[ 5  9 13]
[ 6 10 14]
#将多维矩阵转换成一个序列
A.flatten()
array([ 3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
#迭代矩阵中的每个元素
for item in A.flat:
    print(item)
3
4
5
6
7
8
9
10
11
12
13
14
#numpy array合并
A=np.array([1,1,1])
B=np.array([2,2,2])
#上下合并
np.vstack((A,B))
array([[1, 1, 1],
       [2, 2, 2]])
#左右合并
np.hstack((A,B))
array([1, 1, 1, 2, 2, 2])
#增加维度
A[:,np.newaxis]
array([[1],
       [1],
       [1]])
A=A[:,np.newaxis]
B=B[:,np.newaxis]
print(A)
print(B)
[[1]
 [1]
 [1]]
[[2]
 [2]
 [2]]
np.vstack((A,B))
array([[1],
       [1],
       [1],
       [2],
       [2],
       [2]])
np.hstack((A,B))
array([[1, 2],
       [1, 2],
       [1, 2]])
#axis=0是上下合并,axis=1是左右合并
np.concatenate((A,B,B,A),axis=1)
array([[1, 2, 2, 1],
       [1, 2, 2, 1],
       [1, 2, 2, 1]])
#numpy array分割
A=np.arange(12).reshape((3,4))
A
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
#纵向分割
np.split(A,2,axis=1)#纵向分成2块
[array([[0, 1],
        [4, 5],
        [8, 9]]), array([[ 2,  3],
        [ 6,  7],
        [10, 11]])]
#横向分割
np.split(A,3,axis=0)#纵向分成3块
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
#不等量分割
np.array_split(A,3,axis=1)
[array([[0, 1],
        [4, 5],
        [8, 9]]), array([[ 2],
        [ 6],
        [10]]), array([[ 3],
        [ 7],
        [11]])]
#纵向分割
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]])]
#numpy cop & deepcopy
a=np.arange(4)
#浅拷贝
b=a
d=b
a[0]=-1
a
array([-1,  1,  2,  3])
b
array([-1,  1,  2,  3])
d
array([-1,  1,  2,  3])
d[1]=-2
a
array([-1, -2,  2,  3])
#深拷贝
b=a.copy()
a[3]=-3
b
array([-1, -2,  2, -3])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值