美文网首页我爱编程
Numpy的形状重塑

Numpy的形状重塑

作者: 躺在稻田里的小白菜 | 来源:发表于2018-08-03 11:09 被阅读0次

    一. 形状改变

    1. reshape
      reshape可以改变数组的形状,但是元素总数必须保持一致。它返回的是原数组的视图,改变形状,但是内容共享。
    arr=np.array([[2,3,4],[6,7,8]])
    a=arr.reshape((3,2))
    print(a)
    a[1]=1
    print(arr)
    
    Out:
    [[2 3]
     [4 6]
     [7 8]]
    
    [[2 3 1]
     [1 7 8]]
    
    1. 其他3个函数都是展开为一维数组,除了flatten是返回一个一维数组副本,其他都是在原数组上迭代。
    arr=np.array([[2,3,4],[6,7,8]])
    a=arr.flatten()
    a[1]=1
    print(a)
    print(arr)
    
    Out:
    [2 1 4 6 7 8]
    
    [[2 3 4]
     [6 7 8]]
    

    二. 翻转(转置)

    transpose和属性T完全等效,就是转置,他们返回的是视图。

    arr=np.array([[2,3,4],[6,7,8]])
    print(arr,arr.T)
    
    Out:
    [[2 3 4]
     [6 7 8]]
    
     [[2 6]
     [3 7]
     [4 8]]
    

    三. 连接

    numpy.concatenate((a1, a2, ...), axis)
    该函数可以连接多个数组,但是要求连接的维度是相匹配的,不匹配怎么连接啊!!下图中栗子,如果改成axis=1,横向拼接,则因为行数不匹配,会报错。

    arr=np.array([[2,3,4],[6,7,8]])
    arr1=np.ones((1,3))
    print(arr1,arr)
    print(np.concatenate((arr1,arr)))
    
    Out:
    [[1. 1. 1.]] 
    
    [[2 3 4]
     [6 7 8]]
    
    [[1. 1. 1.]
     [2. 3. 4.]
     [6. 7. 8.]]
    

    四. 分割

    1. split
      numpy.split(ary, indices_or_sections, axis)
    • ary:被分割的输入数组
    • indices_or_sections:可以是整数,表明要分割的子数组的数量。 如果此参数是一维数组,则表明分割点下标。
    • axis:默认为 0
    arr=np.array([[2,3,4],[6,7,8],[1,1,1],[0,0,0]])
    a=np.split(arr,[1,2])
    print(a)
    
    Out:
    [array([[2, 3, 4]]),   array([[6, 7, 8]]),   array([[1, 1, 1],[0, 0, 0]])]
    
    1. hsplit、vsplit
      numpy.hsplit是split()函数的特例,其中轴为 1 表示水平分割,无论输入数组的维度是什么。
      numpy.vsplit是split()函数的特例,其中轴为 0 表示竖直分割,无论输入数组的维度是什么。

    相关文章

      网友评论

        本文标题:Numpy的形状重塑

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