Aby połączyć dwie tablice 3D w NumPy, możesz użyć funkcji concatenate
. Przyjmuje ona trzy argumenty:
arrays
: lista tablic do połączeniaaxis
: oś wzdłuż której tablica będzie łączona. Domyślnie jest to oś 0.out
: opcjonalnie, tablica do której wynik zostanie zapisany.
Na przykład, jeśli chcesz połączyć dwie tablice 3D o kształcie (2, 3, 4) i (2, 3, 4), wygląda to tak:
import numpy as np
a = np.random.random((2, 3, 4))
array([[[0.27716789, 0.53008684, 0.10013984, 0.15620086],
[0.88685682, 0.12212957, 0.31898502, 0.34418252],
[0.53840838, 0.33190352, 0.02789844, 0.56265886]],
[[0.13419309, 0.69167961, 0.08270659, 0.77344485],
[0.71147748, 0.13166062, 0.60646776, 0.024938 ],
[0.44330139, 0.10066512, 0.92206087, 0.58706428]]])
b = np.random.random((2, 3, 4))
array([[[0.09307458, 0.11745333, 0.43036813, 0.88489684],
[0.8052361 , 0.76421119, 0.46543788, 0.60395221],
[0.22105655, 0.78187505, 0.52043199, 0.06296854]],
[[0.48302276, 0.06804468, 0.72436741, 0.06736749],
[0.98544143, 0.85248064, 0.38032969, 0.7543766 ],
[0.91473262, 0.37909246, 0.66467057, 0.40860377]]])
c = np.concatenate((a, b), axis=0)
array([[[0.27716789, 0.53008684, 0.10013984, 0.15620086],
[0.88685682, 0.12212957, 0.31898502, 0.34418252],
[0.53840838, 0.33190352, 0.02789844, 0.56265886]],
[[0.13419309, 0.69167961, 0.08270659, 0.77344485],
[0.71147748, 0.13166062, 0.60646776, 0.024938 ],
[0.44330139, 0.10066512, 0.92206087, 0.58706428]],
[[0.09307458, 0.11745333, 0.43036813, 0.88489684],
[0.8052361 , 0.76421119, 0.46543788, 0.60395221],
[0.22105655, 0.78187505, 0.52043199, 0.06296854]],
[[0.48302276, 0.06804468, 0.72436741, 0.06736749],
[0.98544143, 0.85248064, 0.38032969, 0.7543766 ],
[0.91473262, 0.37909246, 0.66467057, 0.40860377]]])
print(c.shape) # (4, 3, 4)
Możesz również połączyć tablicę wzdłuż innej osi, np. osi 1:
a = np.random.random((2, 3, 4))
b = np.random.random((2, 3, 4))
d = np.concatenate((a, b), axis=1)
array([[[0.27716789, 0.53008684, 0.10013984, 0.15620086],
[0.88685682, 0.12212957, 0.31898502, 0.34418252],
[0.53840838, 0.33190352, 0.02789844, 0.56265886],
[0.09307458, 0.11745333, 0.43036813, 0.88489684],
[0.8052361 , 0.76421119, 0.46543788, 0.60395221],
[0.22105655, 0.78187505, 0.52043199, 0.06296854]],
[[0.13419309, 0.69167961, 0.08270659, 0.77344485],
[0.71147748, 0.13166062, 0.60646776, 0.024938 ],
[0.44330139, 0.10066512, 0.92206087, 0.58706428],
[0.48302276, 0.06804468, 0.72436741, 0.06736749],
[0.98544143, 0.85248064, 0.38032969, 0.7543766 ],
[0.91473262, 0.37909246, 0.66467057, 0.40860377]]])
print(d.shape) # (2, 6, 4)
Istnieje również funkcja stack
, która pozwala na połączenie tablic wzdłuż nowej osi. Na przykład, jeśli chcesz połączyć dwie tablice 3D o kształcie (2, 3, 4) i (2, 3, 4) wzdłuż nowej osi o indeksie 3, wygląda to tak:
a = np.random.random((2, 3, 4))
b = np.random.random((2, 3, 4))
e = np.stack((a, b), axis=3)
array([[[[0.27716789, 0.09307458],
[0.53008684, 0.11745333],
[0.10013984, 0.43036813],
[0.15620086, 0.88489684]],
[[0.88685682, 0.8052361 ],
[0.12212957, 0.76421119],
[0.31898502, 0.46543788],
[0.34418252, 0.60395221]],
[[0.53840838, 0.22105655],
[0.33190352, 0.78187505],
[0.02789844, 0.52043199],
[0.56265886, 0.06296854]]],
[[[0.13419309, 0.48302276],
[0.69167961, 0.06804468],
[0.08270659, 0.72436741],
[0.77344485, 0.06736749]],
[[0.71147748, 0.98544143],
[0.13166062, 0.85248064],
[0.60646776, 0.38032969],
[0.024938 , 0.7543766 ]],
[[0.44330139, 0.91473262],
[0.10066512, 0.37909246],
[0.92206087, 0.66467057],
[0.58706428, 0.40860377]]]])
print(e.shape) # (2, 3, 4, 2)
Łączenie dwóch tablic 1D:
import numpy as np
# Tworzenie dwóch tablic 1D
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# Łączenie tablic
c = np.concatenate([a, b])
print(c) # [1 2 3 4 5 6]
Łączenie dwóch tablic 2D:
import numpy as np
# Tworzenie dwóch tablic 2D
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# Łączenie tablic wzdłuż pierwszego wymiaru
c = np.concatenate([a, b], axis=0)
print(c)
# [[1 2]
# [3 4]
# [5 6]
# [7 8]]
# Łączenie tablic wzdłuż drugiego wymiaru
d = np.concatenate([a, b], axis=1)
print(d)
# [[1 2 5 6]
# [3 4 7 8]]
3. Łączenie trzech tablic 3D:
import numpy as np
a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
b = np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])
c = np.concatenate((a, b), axis=0)
print(c)
[[[ 1 2]
[ 3 4]]
[[ 5 6]
[ 7 8]]
[[ 9 10]
[11 12]]
[[13 14]
[15 16]]]
Łączenie trzech tablic 3D z użyciem stack()
import numpy as np
a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
b = np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])
c = np.stack((a, b), axis=0)
print(c)
[[[ 1 2]
[ 3 4]]
[[ 5 6]
[ 7 8]]]
[[[ 9 10]
[11 12]]
[[13 14]
[15 16]]]
Łączenie trzech tablic 3D z użyciem vstack()
import numpy as np
a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
b = np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])
c = np.vstack((a, b))
print(c)
[[[ 1 2]
[ 3 4]]
[[ 5 6]
[ 7 8]]
[[ 9 10]
[11 12]]
[[13 14]
[15 16]]]
Łączenie trzech tablic 3D z użyciem hstack()
import numpy as np
a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
b = np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])
c = np.hstack((a, b))
print(c)
[[[ 1 2 9 10]
[ 3 4 11 12]]
[[ 5 6 13 14]
[ 7 8 15 16]]]