陣列拼接和**
所有的操作都是針對單一陣列的,但有時也需要將多個陣列合併為
乙個,或將乙個陣列**成多個。接下來將詳細介紹這些操作。
陣列的拼接
拼接或連線
numpy
中的兩個陣列主要由
np.concatenate
、np.vstack
和 np.hstack
例程實
現。np.concatenate
將陣列元組或陣列列表作為第乙個引數,如下所示:
x = np.array([1, 2, 3])
y = np.array([3, 2, 1])
np.concatenate([x, y])
array([1, 2, 3, 3, 2, 1])
你也可以一次性拼接兩個以上陣列:
z = [99, 99, 99]
print(np.concatenate([x, y, z]))
[ 1 2 3 3 2 1 99 99 99]
np.concatenate 也可以用於二維陣列的拼接:
grid = np.array([[1, 2, 3], [4, 5, 6]])
# 沿著第乙個軸拼接
np.concatenate([grid, grid])
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3],
[4, 5, 6]])
# 沿著第二個軸拼接(從0開始索引)
np.concatenate([grid, grid], axis=1)
array([[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]])
沿著固定維度處理陣列時,使用
np.vstack
(垂直棧)和
np.hstack
(水平棧)函式會更簡潔:
x = np.array([1, 2, 3])
grid = np.array([[9, 8, 7], [6, 5, 4]])
# 垂直棧陣列 np.vstack([x, grid])
array([[1, 2, 3],
[9, 8, 7],
[6, 5, 4]])
# 水平棧陣列
y = np.array([[99], [99]])
np.hstack([grid, y])
array([[ 9, 8, 7, 99],
[ 6, 5, 4, 99]])
與之類似,
np.dstack
將沿著第三個維度拼接陣列。
陣列的**
與拼接相反的過程是**。**可以通過
np.split
、np.hsplit
和 np.vsplit
函式來實現。可以向以上函式傳遞乙個索引列表作
為引數,索引列表記錄的是**點位置:
x = [1, 2, 3, 99, 99, 3, 2, 1]
x1, x2, x3 = np.split(x, [3, 5])
print(x1, x2, x3)
[1 2 3] [99 99] [3 2 1]
值得注意的是,
n **點會得到
n + 1
個子陣列。相關的
np.hsplit
和 np.vsplit
的用法也類似:
grid = np.arange(16).reshape((4, 4))
grid
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
left, right = np.hsplit(grid, [2])
print(left)
print(right)
[[ 0 1]
[ 4 5]
[ 8 9]
[12 13]]
[[ 2 3]
[ 6 7]
[10 11]
[14 15]]
同樣,
np.dsplit
將陣列沿著第三個維度**。
NumPy入門基礎語法學習1
首先安裝好numpy以後,匯入numpy import numpy as np用如下方式建立一 個整型值列表 l list range 10 結果如下 結果如下 python 提供了幾種將資料儲存在有效的 固定型別的資料快取中的選 項。內建的陣列 array 模組 在 python 3.3 之後可用...
C 基礎語法學習(4)
如果能作為左值則返回引用,例如a b不能作為左值,a b可作為左值,a 不能作為左值,其返回乙個值,是常量,a可作為左指,返回a這個變數 2.當無法修改左運算元的類時,使用全域性變數進行過載,如 和 因為無法修改ostream和istream,只能用友元函式進行過載,若用成員函式,成員變數會作為左值...
基礎語法學習
public class hello 類名,變數名,方法名 關鍵字 以 a z a z 開頭 整數型別 byte short int long l 浮點型別 float f double 字元型別 char boolean型別 true 或 false 引用資料型別 類,介面,陣列 二進位制 0b ...