day4--numpy

numpy—科学计算库

  1. e的次幂,开根号
    import numpy as np
    B = np.arange(3)
    print(B)
    print(np.exp(B))
    print(np.sqrt(B))
    —[0 1 2]
    [ 1. 2.71828183 7.3890561 ]
    [ 0. 1. 1.41421356]

  2. ravel 是将一个矩阵拉平成一个向量,即用向量的形式表示这个矩阵。而a.shape(6,2)又将一个向量转换为一个62的矩阵。a.T表示求矩阵a的一个转置矩阵 行和列进行变换。(如果整形操作中给定的维度为-1,则自动计算其他维度)
    a = np.floor(10
    np.random.random((3,4)))
    print(a)
    print(a.shape)
    print(a.ravel())
    a.shape = (6, 2)
    print(a)
    print(a.T)
    a.resize((2,6))
    print(a)
    a.reshape(3,-1)
    print(a)

—[[ 4. 9. 9. 9.]
[ 7. 1. 0. 9.]
[ 0. 4. 4. 9.]]
(3, 4)
[ 4. 9. 9. 9. 7. 1. 0. 9. 0. 4. 4. 9.]
[[ 4. 9.]
[ 9. 9.]
[ 7. 1.]
[ 0. 9.]
[ 0. 4.]
[ 4. 9.]]
[[ 4. 9. 7. 0. 0. 4.]
[ 9. 9. 1. 9. 4. 9.]]
[[ 4. 9. 9. 9. 7. 1.]
[ 0. 9. 0. 4. 4. 9.]]
[[ 5. 2. 2. 7.]
[ 5. 3. 2. 8.]
[ 8. 0. 2. 6.]]

  1. np.hstack((a,b)) 将a矩阵和b矩阵进行横向拼接;np.vstack((a,b))将a矩阵和b矩阵进行纵向拼接;
    a = np.floor(10np.random.random((2,2)))
    b = np.floor(10
    np.random.random((2,2)))
    print(a)
    print(’—’)
    print(b)
    print(’—’)
    print(np.hstack((a,b)))
    —[[ 0. 1.]
    [ 2. 6.]]
    —[[1. 0.]
    [4 .1 ]]

[[ 0. 1. 1. 0.]
[ 2. 6. 4. 1.]]

  1. hsplit是对行进行切分 a表示待切分的行参数 3表示切分成三份;np.hsplit(a,(3,4)) 传入元组 指定位置进行切割;vsplit是对列进行切分 a表示待切分的行参数 3表示切分成三份
    a = np.floor(10np.random.random((2,12)))
    print(a)
    print(np.hsplit(a,3))
    print(np.hsplit(a,(3,4))) #在第三列和第四列之后拆分a
    a = np.floor(10
    np.random.random((12,2)))
    print(a)
    np.vsplit(a,3)

—[[ 2. 9. 0. 3. 9. 6. 6. 1. 5. 2. 8. 0.]
[ 3. 4. 5. 7. 7. 3. 7. 1. 3. 4. 7. 9.]]
[array([[ 2., 9., 0., 3.],
[ 3., 4., 5., 7.]]),
array([[ 9., 6., 6., 1.],
[ 7., 3., 7., 1.]]),
array([[ 5., 2., 8., 0.],
[ 3., 4., 7., 9.]])]

[array([[ 2., 9., 0.],
[ 3., 4., 5.]]),
array([[ 3.],
[ 7.]]),
array([[ 9., 6., 6., 1., 5., 2., 8., 0.],
[ 7., 3., 7., 1., 3., 4., 7., 9.]])]

[[ 7. 9.]
[ 0. 6.]
[ 2. 4.]
[ 5. 2.]
[ 7. 4.]
[ 1. 2.]
[ 9. 2.]
[ 5. 7.]
[ 5. 5.]
[ 5. 5.]
[ 1. 9.]
[ 5. 3.]]

[array([[ 7., 9.],
[ 0., 6.],
[ 2., 4.],
[ 5., 2.]]),
array([[ 7., 4.],
[ 1., 2.],
[ 9., 2.],
[ 5., 7.]]),
array([[ 5., 5.],
[ 5., 5.],
[ 1., 9.],
[ 5., 3.]])]

  1. 简单的赋值,a与b的地址是相同的,这个就是所谓的深复制
    a = np.arange(12)
    b = a
    b is a #a和b是同一个ndarray对象的两个名称
    b.shape = 3,4
    print(a.shape)
    print(id(a))
    print(id(b))
    —(3, 4)
    117452112
    117452112

  2. 视图方法创建一个新的数组对象,该数组对象查看相同的数据(view是浅复制),浅复制不会复制a的地址到c,
    改变c的值不会影响到a,改变c的值不会影响到a
    c = a.view()
    c is a
    c.shape = 2,6
    print(a.shape)
    c[0,4] = 1234
    print(a)
    —(3, 4)
    [[ 0 1 2 3]
    [1234 5 6 7]
    [ 8 9 10 11]]

  3. copy也是属于浅拷贝
    d = a.copy()
    d is a
    d[0,0] = 9999
    print(d)
    print(a)
    —[[9999 1 2 3]
    [1234 5 6 7]
    [ 8 9 10 11]]
    [[ 0 1 2 3]
    [1234 5 6 7]
    [ 8 9 10 11]]

  4. argmax 索引最大值的位置,data.argmax(axis=0) axis=0意思是指定列去索引 找出最大值返回索引值的位置
    import numpy as np
    data = np.sin(np.arange(20)).reshape(5,4)
    print(data)
    ind = data.argmax(axis=0)
    print(ind)
    data_max = data[ind, range(data.shape[1])]
    print(data_max)
    —[[ 0. 0.84147098 0.90929743 0.14112001]
    [-0.7568025 -0.95892427 -0.2794155 0.6569866 ]
    [ 0.98935825 0.41211849 -0.54402111 -0.99999021]
    [-0.53657292 0.42016704 0.99060736 0.65028784]
    [-0.28790332 -0.96139749 -0.75098725 0.14987721]]
    [2 0 3 1]
    [ 0.98935825 0.84147098 0.99060736 0.6569866 ]

  5. tile 对当前的行和列进行扩展(矩阵由原来的一维扩展到了三行五列)
    a = np.arange(0, 40, 10)
    b = np.tile(a, (3, 5))
    print(b)
    —[[ 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30]
    [ 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30]
    [ 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30]]

  6. tile扩展
    a = np.arange(0, 40, 10)
    print(a)
    b = np.tile(a, (1, 4))
    print(b)
    —[ 0 10 20 30]
    [[ 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30]]

  7. sort 对当前的数组按照行的维度进行排序(因为axis=1),argsort 是对值的索引进行排序 默认是值从小到大 然后按照值排序获取索引,输出索引
    a = np.array([[4, 3, 5], [1, 2, 1]])
    print(a)
    b = np.sort(a, axis=1)
    print(b)
    a.sort(axis=1)
    print(a)
    a = np.array([4, 3, 1, 2])
    j = np.argsort(a)
    print(j)
    print(a[j])

—[[4 3 5]
[1 2 1]]
[[3 4 5]
[1 1 2]]
[[3 4 5]
[1 1 2]]
[2 3 1 0] #按索引序号排列,输出索引
[1 2 3 4] #输出索引对应的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值