Numpy 基础学习笔记

  1. Numpy 的属性
array = np.array([[1,2,3],
                  [2,3,4]])

print(array)                          # [1,2,3]
                                        [2,3,4]

print(array.ndim)                     # 2
print(array.shape)                    # (2,3)
print(array.size)                     # 6
  1. 创建 array
a = np.array([2,3,4],[2,3,4])

a = np.zeros((3,4))                   # 3行4列的0矩阵
a = np.ones((3,4))                    # 3行4列的1矩阵
a = np.empty((3,4))                   # 3行4列的空矩阵
a = np.arange(12).reshape((3,4))      # 从0-11的3行4列的矩阵,arrange 与 range 用法相同
a = np.linespace(1, 10, 6)            # 从1-10生成6个等距线段,也可以用 reshape 改 shape

  1. 基础运算1
a = np.array([[1,1],                          # [[1,1],
              [0,1])                             [0,1]]
              
b = np.arange(4).reshape((2,2))               # [[0,1],
                                                 [2,3]]
                                                 
c = a*b                                       # [[0,1],
                                                 [0,3]]
                                                 
c_dot = np.dot(a,b)                           # [[2,4],
                                                 [2,3]]
                                                 
c_dot_2 = a.dot(b)                            # [[2,4],
                                                 [2,3]]

* 是对应元素做乘法,dot 是矩阵的乘法
np.dot(a,b)a.dot(b)只是写法不同,意义相同
4. 基础计算2

a = np.random.random((2,4))

print(a)                        # [[0.31402404 0.48486076 0.72364884 0.70226248]
                                   [0.56745383 0.46239721 0.35811925 0.73955183]]
                                         
print(np.sum(a,axis=1))         # [2.22479612 2.12752212]
                                         
print(np.min(a,axis=0))         # [0.31402404 0.46239721 0.35811925 0.70226248]
                                         
print(np.max(a,axis=1))         # [0.72364884 0.73955183]

axis=0 是对每一行计算,axis=1 是对每一列计算,可以再运算中指定
5. 基础运算3

a = np.arange(2, 14).reshape((3, 4))

print(np.argmin(a))            # 最小值的索引
print(np.argmax(a))            # 最小值的索引

print(np.average(a))
print(np.mean(a))
print(a.mean())                # 平均值,三种方法一样

print(np.median(a))            # 中位数

print(np.cumsum(a))            # 累加值的一维矩阵

print(np.diff(a))              # 累差矩阵,与 a 矩阵的 shape 相同

print(np.nonzero(a))           # 输出每个非零数的行和列,行和列是分开的两个一维矩阵

print(np.transpose(a))
print(a.T)                     # 矩阵转置,两种方法一样

print(np.sort(a))              # 排序,针对每行排序

print(np.clip(a, 5, 9))        # 矩阵 a 中所有大于 9 的数设为 9,小于 5 的数设为 5,中间的数保留不变
  1. 索引
a = np.arange(3,15).reshape((3,4))
print(a)                       # [[ 3  4  5  6]
                                  [ 7  8  9 10]
                                  [11 12 13 14]]
print(a[1])                    # [ 7  8  9 10]

print(a[2][1])                 # 12
print(a[2, 1])                 # 12,两种方法一样

for row in a:                  # 对行遍历,输出每一行
    print(row)

for column in a.T:             # 对列遍历,输出每一列
    print(column)
 
print(a.flatten())             # 把矩阵 a 转变为一维矩阵

for item in a.flat:            # flat 是一个迭代器,可以用来遍历每一个元素
    print(item)
  1. array 的合并
a = np.array([1, 1, 1])
b = np.array([2, 2, 2])

# 横向和竖向合并
print(np.vstack((a, b)))               # [[1 1 1]
                                          [2 2 2]]

print(np.hstack((a, b)))               # [1 1 1 2 2 2]

print(a.shape)                         # (3,)

print(a[np.newaxis, :])                # [[1,1,1]]

print(a[np.newaxis, :].shape)          # (1,3)

print(a[:, np.newaxis])                # [[1]
                                          [1]
                                          [1]]

print(a[:, np.newaxis].shape)          # (3,1)
a = np.array([1, 1, 1])[:, np.newaxis]
b = np.array([2, 2, 2])[:, np.newaxis]



c = np.concatenate((a, b, b),axis=1)           # [[1 2 2]
                                                  [1 2 2]
                                                  [1 2 2]]

c = np.concatenate((a, b, b),axis=0)           # [[1]
                                                  [1]
                                                  [1]
                                                  [2]
                                                  [2]
                                                  [2]
                                                  [2]
                                                  [2]
                                                  [2]]

concatenate 设置 axis=0np.hstack((a, b)) 作用相同
concatenate 设置 axis=1np.vstack((a, b)) 作用相同
8. 分割

a = np.arange(12).reshape((3,4))             # [[ 0  1  2  3]
                                                [ 4  5  6  7]
                                                [ 8  9 10 11]]

print(np.split(a, 2, axis=1))                # [array([[0, 1],
                                                       [4, 5],
                                                       [8, 9]]),                  array([[ 2,  3],
                                                       [ 6,  7],
                                                       [10, 11]])]

print(np.split(a, 3, axis=0))                # [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

print(np.array_split(a, 3, axis=1))          # [array([[0, 1],
                                                       [4, 5],
                                                       [8, 9]]),  
                                                array([[ 2],	
                                                       [ 6],
                                                       [10]]),              
                                                array([[ 3],
                                                       [ 7],
                                                       [11]])]

array_split() 可以不等分矩阵
split() 设置 axis=0np.vsplit((a, 3)) 作用相同
split() 设置 axis=1np.hsplit((a, b)) 作用相同
注意:split 和 vsplit hsplit 都只能均分
9. copy deepcopy

a = np.arange(4)        # [0 1 2 3]

b = a
c = a

b = a.copy()            # 用 copy 赋值之后,再修改 a 就不会改变 b 的值,
                        # 但是直接赋值的 c 还是会随 a 改变
a[0] = 11                                 
print(b)                # [0 1 2 3]
print(c)                # [11 1 2 3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值