Numpy 多维数组变为常量、增加维度、元素复制、按块复制、横轴竖轴合并数组、连接数组
生活随笔
收集整理的這篇文章主要介紹了
Numpy 多维数组变为常量、增加维度、元素复制、按块复制、横轴竖轴合并数组、连接数组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. flatten
NumPy 的 flatten 函數也有改變 shape 的能力,它將高維數組變為向量。但是,它會發生數組復制行為。
In [57]: m = np.random.randint(1,10,(2,3))In [58]: m
Out[58]:
array([[2, 1, 6],[4, 2, 4]])In [59]: n = m.flatten()In [60]: n
Out[60]: array([2, 1, 6, 4, 2, 4])In [61]:
n[0] 元素被改變后,m 的元素沒有發生變化。
In [61]: n[0] = 100In [62]: n
Out[62]: array([100, 1, 6, 4, 2, 4])In [63]: m
Out[63]:
array([[2, 1, 6],[4, 2, 4]])In [64]:
2. newaxis
使用 newaxis 增加一個維度,維度的索引只有 0 。
In [64]: m = np.arange(10)In [65]: m
Out[65]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])In [69]: n = m[:, np.newaxis]In [70]: n
Out[70]:
array([[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]])In [71]:
3. repeat
repeat 操作,實現某一維上的元素復制操作。在維度 0 上復制元素 2 次:
In [72]: a = np.array([[1,2], [3,4]])In [73]: a
Out[73]:
array([[1, 2],[3, 4]])In [74]: np.repeat(a,2,axis=0)
Out[74]:
array([[1, 2],[1, 2],[3, 4],[3, 4]])In [75]:
在維度 1 上復制元素 2 次:
In [75]: np.repeat(a,2,axis=1)
Out[75]:
array([[1, 1, 2, 2],[3, 3, 4, 4]])In [76]:
4. tile
tile 實現按塊復制元素:
In [76]: a
Out[76]:
array([[1, 2],[3, 4]])In [77]: np.tile(a, 3)
Out[77]:
array([[1, 2, 1, 2, 1, 2],[3, 4, 3, 4, 3, 4]])In [78]: np.tile(a, (2, 3))
Out[78]:
array([[1, 2, 1, 2, 1, 2],[3, 4, 3, 4, 3, 4],[1, 2, 1, 2, 1, 2],[3, 4, 3, 4, 3, 4]])In [79]: a
Out[79]:
array([[1, 2],[3, 4]])In [80]:
5. vstack
vertical stack,沿豎直方向合并多個數組:
In [80]: a = np.array([[1,2], [3,4]])In [81]: a
Out[81]:
array([[1, 2],[3, 4]])In [82]: b = np.array([[-1, -2]])In [83]: b
Out[83]: array([[-1, -2]])In [84]: c = np.vstack((a,b)) # 參數為元組In [85]: c
Out[85]:
array([[ 1, 2],[ 3, 4],[-1, -2]])In [86]:
6. hstack
hstack 沿水平方向合并多個數組。值得注意,不管是 vstack,還是 hstack,沿著合并方向的維度,其元素的長度要一致。
In [86]: a = np.array([[1,2],[3,4]])In [87]: a
Out[87]:
array([[1, 2],[3, 4]])In [88]: b = np.array([[5,6,7],[8,9,10]])In [89]: b
Out[89]:
array([[ 5, 6, 7],[ 8, 9, 10]])In [90]: c = np.hstack((a,b))In [91]: c
Out[91]:
array([[ 1, 2, 5, 6, 7],[ 3, 4, 8, 9, 10]])In [92]:
7. concatenate
concatenate 指定在哪個維度上合并數組。
In [92]: a = np.array([[1,2],[3,4]])In [93]: a
Out[93]:
array([[1, 2],[3, 4]])In [94]: b = np.array([[-1,-2]])In [95]: b
Out[95]: array([[-1, -2]])In [97]: np.concatenate((a,b),axis=0) # 效果等于 vstack
Out[97]:
array([[ 1, 2],[ 3, 4],[-1, -2]])In [98]: c = np.array([[5,6,7],[8,9,10]])In [99]: np.concatenate((a,c),axis=1) # 效果等于 hstack
Out[99]:
array([[ 1, 2, 5, 6, 7],[ 3, 4, 8, 9, 10]])In [100]:
8. argmax、argmin
argmax 返回數組中某個維度的最大值索引,當未指明維度時,返回 buffer 中最大值索引。如下所示:
In [100]: a = np.random.randint(1,10,(2,3))In [101]: a
Out[101]:
array([[5, 1, 6],[2, 1, 1]])In [102]: a.argmax()
Out[102]: 2In [103]: a.argmax(axis=0)
Out[103]: array([0, 0, 0], dtype=int64)In [104]: a.argmax(axis=1)
Out[104]: array([2, 0], dtype=int64)In [105]:
總結
以上是生活随笔為你收集整理的Numpy 多维数组变为常量、增加维度、元素复制、按块复制、横轴竖轴合并数组、连接数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Numpy 统计变量(平均值、标准差、方
- 下一篇: 使用 U 盘制作 Ubuntu 系统启动