numpy模块

作者: cure_py | 来源:发表于2017-07-18 21:31 被阅读0次
    1. np.newaxis--为 numpy.ndarray(多维数组)增加一个轴]

    np.newaxis 在使用和功能上等价于 None,其实就是 None 的一个别名

    >> type(np.newaxis)
    NoneType
    
    >> x = np.arange(3)
    >> x
    array([0, 1, 2])
    >> x.shape
    (3,)
    
    >> x[:, np.newaxis]
    array([[0],
           [1],
           [2]])
    
    >> x[:, None]
    array([[0],
           [1],
           [2]])
    
    >> x[:, np.newaxis].shape
     (3, 1)
    
    >>> b = np.array([1, 2, 3, 4, 5, 6])
    >>> b[np.newaxis]
    array([[1, 2, 3, 4, 5, 6]])
    
    2. np.linspace实现间隔采样

    numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)[source]

    a=np.linspace(-1,1,num=5)
    print a
    # 输出
    >>>[-1.  -0.5  0.   0.5  1. ]
    
    3. nan inf

    numpy.nan_to_num(x):
    使用0代替数组x中的nan元素,使用有限的数字代替inf元素

    >>>import numpy as np
    >>> a = np.array([[np.nan,np.inf],\
    ...               [-np.nan,-np.inf]])
    >>> a
    array([[  nan,   inf],
           [  nan,  -inf]])
    >>> np.nan_to_num(a)
    array([[ 0.00000000e+000,  1.79769313e+308],
           [ 0.00000000e+000, -1.79769313e+308]])
    

    和此类问题相关的还有一组判断用函数,包括:

    • isinf
    • isneginf
    • isposinf
    • isnan
    • isfinite 使用方法也很简单,以isnan举例说明:
    >>> import numpy as np
    >>> np.isnan(np.array([[1, np.nan, np.inf],\
    ...               [np.nan, -np.inf, -0.25]]))
    array([[False,  True, False],
           [ True, False, False]], dtype=bool)
    
    4. axis

    axis和list中的选的时候一样啊...不管是几维,都是当做一个一维数组存,只不过每个数组元素都是地址而已,以345的三维为例,第一层(axis=0,即页)一维数组的元素存的是3个地址,每个地址都指向一个4*5的二维数组,然后第二层(axis=1,即行)一维数组的元素存的是4个地址,每个地址都指向一个长度为5的一维数组,第三层(axis=2,即列)一维数组的元素就是5个元素value。所以莫烦这里讲的二维,axis=0,取行,是将3个长度为4的一维数组相加得到1个长度为4的一维数组,然后对每个元素求平均(这里是三行,即除3)结果得到一个长度为4的一维数组,做的操作实际上代表的是,对列求平均,axis=1取列同理,取的是3个一维数组中每一个一维数组中的各个元素,每个一维数组内部相加求平均(四个元素,即除4),结果得到一个长度为3的一维数组,做的操作实际上代表对行求平均。

    A = np.arange(2, 14).reshape(3, 4)
    print(A)
    print(np.mean(A, axis=1))  # 行
    print(np.mean(A, axis=0))  # 列
    

    简单的记法完全没问题:axis=0 表示对行(上下)进行操作计算,axis=1表示对列(左右)进行操作计算
    https://blog.csdn.net/Cowry5/article/details/80188056

    5. reshape(1, -1)

    不知道z的shape属性时,将z变成只有一列/一行,numpy自动计算对应的行和列数

    >>> z = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]])
    
    >>> print(z)
    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]
     [13 14 15 16]]
    >>> print(z.shape)
    (4, 4)
    >>> print(z.reshape(-1))
    [ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
    >>> print(z.reshape(-1,1))
    

    相关文章

      网友评论

        本文标题:numpy模块

        本文链接:https://www.haomeiwen.com/subject/ymxkkxtx.html