NumPy(基础)

常用函数

  • mat( ): 将数组转化为矩阵
  • np.I 操作符: 实现了矩阵求逆的运算
  • np.log:是计算对数函数
  • np.abss:是计算数据的绝对值
  • np.max imum:计算元素 y 中的最大值,你也可以 np.max imum(v,0)

数据类型和形状

  • NumPy 中处理数字的最常见方式是通过ndarray对象。它们与 Python 列表相似,但是可以有任意数量的维度。而且,ndarray支持快速的数学运算,这正是我们想要的。
  • 由于它可以存储任意数量的维度,你可以使用ndarray来表示我们之前提到的任意数据类型:标量、向量、矩阵或张量。
1
2
#为了方便使用numpy 采用np简写
import numpy as np

numpy 的几种属性(维度、行数和列数、元素个数)

1
2
3
4
5
6
array = np.array([[1,2,3],[2,3,4]])  #列表转化为矩阵
print(array)
"""
array([[1, 2, 3],
[2, 3, 4]])
"""
1
2
3
4
5
6
7
8
print('number of dim:',array.ndim)  # 维度
# number of dim: 2

print('shape :',array.shape) # 行数和列数
# shape : (2, 3)

print('size:',array.size) # 元素个数
# size: 6

创建 array

array:创建数组

1
2
3
a = np.array([2,23,4])  # list 1d
print(a)
# [2 23 4]

指定数据 dtype * 当你创建 NumPy 数组时,可以指定类型 - 但是数组中的每一项必须具有相同的类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# py3.5后创建int默认类型为int32
a = np.array([2,23,4],dtype=np.int)
print(a.dtype)

# int64
a = np.array([2,23,4],dtype=np.int64)
print(a.dtype)

# 创建float默认类型为float64
a = np.array([2,23,4],dtype=np.float)
print(a.dtype)

# float32
a = np.array([2,23,4],dtype=np.float32)
print(a.dtype)

创建特定数据

  • 2行3列矩阵

    1
    2
    3
    4
    5
    6
    a = np.array([[2,23,4],[2,32,4]])  # 2d 矩阵 23
    print(a)
    """
    [[ 2 23 4]
    [ 2 32 4]]
    """

  • 创建全零数组

    1
    2
    3
    4
    5
    6
    a = np.zeros((3,4)) # 数据全为0,3行4列
    """
    array([[ 0., 0., 0., 0.],
    [ 0., 0., 0., 0.],
    [ 0., 0., 0., 0.]])
    """

  • 创建全一数组, 同时也能指定这些特定数据的 dtype:

    1
    2
    3
    4
    5
    6
    a = np.ones((3,4),dtype = np.int)   # 数据为1,3行4列
    """
    array([[1, 1, 1, 1],
    [1, 1, 1, 1],
    [1, 1, 1, 1]])
    """

  • 创建全空数组, 其实每个值都是接近于零的数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    a = np.empty((3,4)) # 数据为empty,34
    """
    array([[ 0.00000000e+000, 4.94065646e-324, 9.88131292e-324,
    1.48219694e-323],
    [ 1.97626258e-323, 2.47032823e-323, 2.96439388e-323,
    3.45845952e-323],
    [ 3.95252517e-323, 4.44659081e-323, 4.94065646e-323,
    5.43472210e-323]])
    """

  • 用 arange 创建连续数组:

    1
    2
    3
    4
    a = np.arange(10,20,2) # 10-19 的数据,2步长
    """
    array([10, 12, 14, 16, 18])
    """

  • 使用 reshape 改变数据的形状

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

  • 用 linspace 创建线段型数据:

    1
    2
    3
    4
    5
    6
    7
    8
    a = np.linspace(1,10,20)    # 开始端1,结束端10,且分割成20个数据,生成线段
    """
    array([ 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. ])
    """

  • 同样也能进行 reshape 工作:

    1
    2
    3
    4
    5
    6
    7
    8
    a = np.linspace(1,10,20).reshape((5,4)) # 更改shape
    """
    array([[ 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. ]])
    """