numpy 笔记

Numpy 属性

import numpy as np
a = np.arange(15).reshape(3,5)
print(a)
print(a.shape)
print(a.ndim)
print(a.dtype.name)
print(a.itemsize)
print(a.size)
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
(3, 5)
2
int64
8
15
c = np.array([[1,2],[3,4]],dtype=complex)
c
array([[1.+0.j, 2.+0.j],
       [3.+0.j, 4.+0.j]])
np.zeros((3,4))
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])
np.ones((2,3,4),dtype=np.int16)
array([[[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]],

       [[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]]], dtype=int16)
np.empty((2,3))
array([[4.65806473e-310, 0.00000000e+000, 0.00000000e+000],
       [0.00000000e+000, 0.00000000e+000, 0.00000000e+000]])
np.arange(10,30,5)
array([10, 15, 20, 25])
np.arange(0,2,0.3)
array([0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])
from numpy import pi
np.linspace(0,2,9)
# 线性等分的意思
array([0.  , 0.25, 0.5 , 0.75, 1.  , 1.25, 1.5 , 1.75, 2.  ])
x = np.linspace(0,2*pi,100)
f = np.sin(x)
np.arange(10000)
array([   0,    1,    2, ..., 9997, 9998, 9999])
np.arange(10000).reshape(100,100)
array([[   0,    1,    2, ...,   97,   98,   99],
       [ 100,  101,  102, ...,  197,  198,  199],
       [ 200,  201,  202, ...,  297,  298,  299],
       ...,
       [9700, 9701, 9702, ..., 9797, 9798, 9799],
       [9800, 9801, 9802, ..., 9897, 9898, 9899],
       [9900, 9901, 9902, ..., 9997, 9998, 9999]])
import sys
np.set_printoptions(threshold=sys.maxsize)
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.sum(axis=1)
array([ 6, 22, 38])

axis=0:列

axis=1:行

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]])

cumsum: 累加

cumulative sum along each row

b = np.arange(3)
np.exp(b)
array([1.        , 2.71828183, 7.3890561 ])
np.sqrt(b)
array([0.        , 1.        , 1.41421356])
c = np.array([2.,-1.,4.])
np.add(b,c)
array([2., 0., 6.])
a = np.arange(10)**3
a
array([  0,   1,   8,  27,  64, 125, 216, 343, 512, 729])
a[2]
8
a[2:5]
array([ 8, 27, 64])

[2,5) 的意思

a = np.arange(2,14).reshape(3,4)
a
array([[ 2,  3,  4,  5],
       [ 6,  7,  8,  9],
       [10, 11, 12, 13]])
a.argmin()
0
a.argmax()
11
a.mean()
7.5
np.median(a)
7.5
a = np.linspace(0,20,20).reshape(4,5)
a
array([[ 0.        ,  1.05263158,  2.10526316,  3.15789474,  4.21052632],
       [ 5.26315789,  6.31578947,  7.36842105,  8.42105263,  9.47368421],
       [10.52631579, 11.57894737, 12.63157895, 13.68421053, 14.73684211],
       [15.78947368, 16.84210526, 17.89473684, 18.94736842, 20.        ]])
np.diff(a)
array([[1.05263158, 1.05263158, 1.05263158, 1.05263158],
       [1.05263158, 1.05263158, 1.05263158, 1.05263158],
       [1.05263158, 1.05263158, 1.05263158, 1.05263158],
       [1.05263158, 1.05263158, 1.05263158, 1.05263158]])
a = np.arange(14,2,-1).reshape(3,4)
a
array([[14, 13, 12, 11],
       [10,  9,  8,  7],
       [ 6,  5,  4,  3]])
np.sort(a)
array([[11, 12, 13, 14],
       [ 7,  8,  9, 10],
       [ 3,  4,  5,  6]])
a.T
array([[14, 10,  6],
       [13,  9,  5],
       [12,  8,  4],
       [11,  7,  3]])
(a.T).dot(a)
array([[332, 302, 272, 242],
       [302, 275, 248, 221],
       [272, 248, 224, 200],
       [242, 221, 200, 179]])
np.clip(a,5,9)
array([[9, 9, 9, 9],
       [9, 9, 8, 7],
       [6, 5, 5, 5]])

所有大于9的都变成9

所有小于5的都变成5

np.mean(a,axis=1)
array([12.5,  8.5,  4.5])

Numpy索引

a = np.arange(3,15)
a
array([ 3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
a[2]
5
a = np.arange(3,15).reshape(3,4)
print(a)
a[2]
# a[2,:]
[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]
array([11, 12, 13, 14])
a[2][2]
# a[2,2]
13
for row in a:
    print(row)
[3 4 5 6]
[ 7  8  9 10]
[11 12 13 14]
for column in a.T:
    print(column)
[ 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

flatten() : 返回一个一维的数组
flat : 一个迭代器

Numpy array合并

a = np.array([1,1,1])
b = np.array([2,2,2])
c = np.vstack((a,b))       # vertical stack 
d = np.hstack((a,b))       # horizontal stack
print(a.shape,c.shape,d.shape)
print(c)
print(d)
(3,) (2, 3) (6,)
[[1 1 1]
 [2 2 2]]
[1 1 1 2 2 2]
a = np.array([1,1,1])[:,np.newaxis]
b = np.array([2,2,2])[:,np.newaxis]
print(a)
[[1]
 [1]
 [1]]
c = np.vstack((a,b))
c
array([[1],
       [1],
       [1],
       [2],
       [2],
       [2]])
c.shape
(6, 1)
d = np.hstack((a,b))
print(d.shape)
(3, 2)
d
array([[1, 2],
       [1, 2],
       [1, 2]])
c = np.concatenate((a,b,b,a),axis=1)
c
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)
[array([[0, 1],
        [4, 5],
        [8, 9]]), array([[ 2,  3],
        [ 6,  7],
        [10, 11]])]
np.split(a,3,axis=0)
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

axis=0 : 对每一列自上而下执行

axis=1 : 对每一行自左向右执行

print(np.vsplit(a,3))   # 纵向分三块
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
print(np.hsplit(a,2))   # 横向分两块
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
不等分割
np.array_split(a,3,axis=1)
[array([[0, 1],
        [4, 5],
        [8, 9]]), array([[ 2],
        [ 6],
        [10]]), array([[ 3],
        [ 7],
        [11]])]

Numpy copy

这里要分为浅复制和深复制

浅的话,就像是引用,别名

深的话,就是复制

# 浅
a = np.arange(5)
b = a
c = a
d = b

# 这里a,b,c,d都是一个东西,一个改变,其他跟着改变
a
array([0, 1, 2, 3, 4])
a[1]=55
a
array([ 0, 55,  2,  3,  4])
b
array([ 0, 55,  2,  3,  4])
c[0:3]=[4,5,6]
d
array([4, 5, 6, 3, 4])
d is a
True
# 深
a = np.arange(2,6)
print(a)
b = a.copy()
print(b)
a[:] = [9,9,9,9]
print(a)
print(b)
[2 3 4 5]
[2 3 4 5]
[9 9 9 9]
[2 3 4 5]

a 是 a

b 是 b


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值