numpy2

numpy

1、属性

  • array=np.array([[1,2,3],[4,5,6]])构建数组

  • array.ndim数组的维数

  • array.shape数组的形状(几行几列)

  • array.size数组的大小

2、矩阵的构建

  • np.array([2,3,4],dtype=np.int)dtype矩阵的数据类型

  • array.dtype数据类型

  • np.zeros((3,4))三行四列全部为0的矩阵

  • np.ones((3,4))三行四列全部为1的矩阵

  • np.empty((3,4))三行四列的为空的矩阵

    • [[0.0e+000]
       [0.0e+000]
       [1.6e-322]]
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12

      - ```np.arange(10,20,2)```指定范围和步长的矩阵,不包括20

      - ```np.arange(12).reshape((3,4))```重新定义矩阵形状

      - ```np.linspace(1,10,20)```从1到10范围内平均分成20段构建矩阵

      - ```python
      [ 1. 1.47368421 1.94736842 2.42105263 2.89473684 3.36842105
      3.84210526 4.31578947 4.78947368 5.26315789 5.73684211 6.21052632
      6.68421053 7.15789474 7.63157895 8.10526316 8.57894737 9.05263158
      9.52631579 10. ]

3、基础运算

  • 加法/减法/乘法/除法/幂

    • a=np.array([10,20,30,40])
      b=np.arange(4)
      c=a+b/a-b
      
      1
      2
      3
      4
      5

      - ```python
      c=a*b
      c=a/b
      c=a**b
    • c=np.sin(a)
      c=np.cos(a)
      c=np.tan(a)
      
      1
      2
      3
      4
      5
      6

      - 判断

      - ```python
      b<3
      [True True True False]
  • 矩阵

    • a=np.array([[1,1],[0,1]])
      b=np.arange(4).reshape((2,2))
      c=a*b //逐个相乘
      c=np.dot(a,b) //矩阵相乘,行X列
      c=a.dot(b) //同上
      
      1
      2
      3
      4
      5
      6
      7
      8

      - ```python
      a=np.random.random((2,4)) //随机生成一个2行4列的矩阵(范围0~1)
      array([[0.88043011, 0.51304377, 0.87026383, 0.84828964],
      [0.1590715 , 0.00240416, 0.47297475, 0.55885749]])
      np.sum(a,axis=1) //axis维度,1为水平方向,0为竖直方向
      np.min(a)
      np.max(a)
    • a=np.arange(2,14).reshape((3,4))
      np.argmin(a) //最小值索引
      np.argmax(a) //最大值索引
      np.mean(a) //平均值
      np.average(a) //同上
      np.median(a) //中位数
      np.cumsum(a) //累加 //array([ 2,  5,  9, 14, 20, 27, 35, 44, 54, 65, 77, 90])
      np.diff(a) //累差 //array([[1, 1, 1],
                                   [1, 1, 1],
                                [1, 1, 1]])
      np.nonzero(a) //非0
      np.sort(a) //排序,逐行排序
      np.transpose(a) //矩阵的转置
      a.T //同上
      np.clip(a,5,9) //小于5的变成5,大于9的变成9,位于5~9的保持不变
      
      1
      2
      3
      4
      5
      6
      7
      8
      9

      ### 4、索引

      ```python
      a=np.arange(3,15)
      print(a[2])
      print(a[2,:]) //第二行
      print(a[:,1]) //第一列
      print(a[1,1:2]) //第一行第一个到第二个
1
2
a.flat //每一项(对象)
a.flatten() //每一项(可输出)

5、合并

1
2
3
4
5
6
a=np.array([1,1,1])
b=np.array([2,2,2])
np.vstack((a,b)) //上下合并
np.hstack((a,b)) //左右合并
a[:,np.newaxis] //转为纵向
np.concatenate((a,b,a,b),axis=0) //合并,可以指定维度

6、分割

1
2
3
4
5
a=np.arange(12).reshape((3,4))
np.split(a,2,axis=1) //分割,必须相等
np.array_split(a,3,axis=1) //不等分割
np.vsplit(a,3) //纵向分割
np.hsplit(a,2) //横向分割

7、复制

1
2
b=a.copy() //赋值,但不关联(浅复制)
b=a //深复制