# 核心概念

  • Numpy中所有元素都是同样的类型,大小形状已知不可变

  • Numpy数组类的名字叫ndarray,简称array(和python标准库中的array.array区分开)

    numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
    # 参数说明
    object:用于生成数组的数据对象
    dtype:指定类型,可选,不传入将根据序列中元素的类型进行推导。
    copy:可选,默认为True,对象被复制。
    order:C语言风格(按行)、FORTRAN风格(按列)或A(任意,默认)。
    subok:默认情况下,返回的数组被强制为基类数组。 如果为True,则返回子类。
    ndmin:指定返回数组的最小维数。
    # 重要属性说明
    ndarray.ndim:数组的轴数量
    ndarray.shape:数组的形状。这是一个整数元组。比如对于n行m列的矩阵,其shape形状就是(n,m)。而shape元组的长度则恰恰是上面的ndim值,也就是轴数。
    ndarray.size:数组中所有元素的个数。这恰好等于shape中元素的乘积。
    ndarray.dtype:数组中元素的数据类型。除了标准的Python类型,Numpy还提供一些自有的类型。
    ndarray.itemsize:元素的字节大小。比如float64类型的itemsize为8=64/8),而complex32的itemsize为4=32/8)。
    ndarray.data:包含数组实际元素的缓冲区。通常我们不需要使用这个属性,因为我们将使用索引工具访问数组中的元素。
    ndarray.flags: 数组对象的一些状态指示或标签
    
  • np.astype:显式地转换数据类型并作为一个新的数组返回

    >>> numeric_string = np.array(['1.23', '-1.20', '33'], dtype=np.string_)
    >>> numeric_string
    array([b'1.23', b'-1.20', b'33'], dtype='|S5')
    
    >>> int_array = np.arange(4)
    >>> old = np.array([3.4,2.4,11.3])
    >>> new = old.astype(int_array.dtype)
    >>> old
    array([ 3.4,  2.4, 11.3])
    >>> new
    array([ 3,  2, 11])
    
  • 预先定义的特殊值

    np.nan: 缺失值,或者理解为'不是一个数'
    # np.isnan() 
    np.pi:圆周率 3.1415926...
    np.e:自然数e 2.718281828459045...
    
  • 可以通过ndarray.flat属性或者ndarray.eavel()方法平铺数组,这些并不改变数组本身。

  • reshape不会修改数组本身,但resize会。