Hướng dẫn newaxis python - trăn newaxis

Nói một cách đơn giản, cái

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
0được sử dụng để tăng kích thước của mảng hiện có thêm một chiều , khi được sử dụng một lần . Như vậy
 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
0được sử dụng để tăng kích thước của mảng hiện có thêm một chiều , khi được sử dụng một lần . Như vậy

  • Mảng 1D sẽ trở thành mảng 2D1D sẽ trở thành mảng 2D

  • Mảng 2D sẽ trở thành mảng 3D2D sẽ trở thành mảng 3D

  • Mảng 3D sẽ trở thành mảng 4D3D sẽ trở thành mảng 4D

  • Mảng 4D sẽ trở thành mảng 5D4D sẽ trở thành mảng 5D

và v.v.

Dưới đây là một minh họa trực quan mô tả việc quảng cáo mảng 1D sang mảng 2D.việc quảng cáo mảng 1D sang mảng 2D.

Hướng dẫn newaxis python - trăn newaxis


Kịch bản-1 :

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
1có thể có ích khi bạn muốn chuyển đổi rõ ràng một mảng 1D thành một vectơ hàng hoặc một vectơ cột , như được mô tả trong hình trên. :
 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
1có thể có ích khi bạn muốn chuyển đổi rõ ràng một mảng 1D thành một vectơ hàng hoặc một vectơ cột , như được mô tả trong hình trên.

Thí dụ:

# 1D array
In [7]: arr = np.arange(4)
In [8]: arr.shape
Out[8]: (4,)

# make it as row vector by inserting an axis along first dimension
In [9]: row_vec = arr[np.newaxis, :]     # arr[None, :]
In [10]: row_vec.shape
Out[10]: (1, 4)

# make it as column vector by inserting an axis along second dimension
In [11]: col_vec = arr[:, np.newaxis]     # arr[:, None]
In [12]: col_vec.shape
Out[12]: (4, 1)

Kịch bản-2 : Khi chúng tôi muốn sử dụng phát sóng numpy như một phần của một số hoạt động, ví dụ như trong khi thực hiện thêm một số mảng. : Khi chúng tôi muốn sử dụng phát sóng numpy như một phần của một số hoạt động, ví dụ như trong khi thực hiện thêm một số mảng.

Thí dụ:

Kịch bản-2 : Khi chúng tôi muốn sử dụng phát sóng numpy như một phần của một số hoạt động, ví dụ như trong khi thực hiện thêm một số mảng.

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])

Giả sử bạn muốn thêm hai mảng sau:

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
2:

ValueError: operands could not be broadcast together with shapes (5,) (3,)

Nếu bạn cố gắng thêm những thứ này như thế, NumPy sẽ nêu ra những điều sau

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
2:
 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
1để tăng kích thước của một trong các mảng để NumPy có thể phát .

In [2]: x1_new = x1[:, np.newaxis]    # x1[:, None]
# now, the shape of x1_new is (5, 1)
# array([[1],
#        [2],
#        [3],
#        [4],
#        [5]])

Trong tình huống này, bạn có thể sử dụng

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
1để tăng kích thước của một trong các mảng để NumPy có thể phát .

In [3]: x1_new + x2
Out[3]:
array([[ 6,  5,  4],
       [ 7,  6,  5],
       [ 8,  7,  6],
       [ 9,  8,  7],
       [10,  9,  8]])

Bây giờ, thêm:

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
4:

In [6]: x2_new = x2[:, np.newaxis]    # x2[:, None]
In [7]: x2_new     # shape is (3, 1)
Out[7]: 
array([[5],
       [4],
       [3]])

Trong tình huống này, bạn có thể sử dụng

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
1để tăng kích thước của một trong các mảng để NumPy có thể phát .

In [8]: x1 + x2_new
Out[8]: 
array([[ 6,  7,  8,  9, 10],
       [ 5,  6,  7,  8,  9],
       [ 4,  5,  6,  7,  8]])

Bây giờ, thêm: : Quan sát rằng chúng tôi nhận được cùng một kết quả trong cả hai trường hợp (nhưng một trường hợp là chuyển vị của trường hợp khác).


Ngoài ra, bạn cũng có thể thêm trục mới vào mảng

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
4: : Điều này tương tự như kịch bản-1. Nhưng, bạn có thể sử dụng
 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
1nhiều lần để quảng bá mảng lên kích thước cao hơn. Một hoạt động như vậy đôi khi là cần thiết cho các mảng thứ tự cao hơn ( ví dụ như Tenors ).

Thí dụ:

In [124]: arr = np.arange(5*5).reshape(5,5)

In [125]: arr.shape
Out[125]: (5, 5)

# promoting 2D array to a 5D array
In [126]: arr_5D = arr[np.newaxis, ..., np.newaxis, np.newaxis]    # arr[None, ..., None, None]

In [127]: arr_5D.shape
Out[127]: (1, 5, 5, 1, 1)

Kịch bản-2 : Khi chúng tôi muốn sử dụng phát sóng numpy như một phần của một số hoạt động, ví dụ như trong khi thực hiện thêm một số mảng.np.newaxis vs np.reshape

Giả sử bạn muốn thêm hai mảng sau: cũng được gọi là chỉ số giả cho phép bổ sung tạm thời một trục vào đa khung.

Nếu bạn cố gắng thêm những thứ này như thế, NumPy sẽ nêu ra những điều sau

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
2:sử dụng toán tử cắt để tái tạo mảng trong khi
 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
8reshapes mảng để bố trí mong muốn (giả định rằng kích thước phù hợp; Và đây là bắt buộc đối với một
 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
9xảy ra).

Trong tình huống này, bạn có thể sử dụng

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
1để tăng kích thước của một trong các mảng để NumPy có thể phát .

In [13]: A = np.ones((3,4,5,6))
In [14]: B = np.ones((4,6))
In [15]: (A + B[:, np.newaxis, :]).shape     # B[:, None, :]
Out[15]: (3, 4, 5, 6)

Bây giờ, thêm:

ValueError: operands could not be broadcast together with shapes (5,) (3,)
0(để sử dụng phát sóng). Một trục bị thiếu được điền vào đây bằng cách sử dụng
 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
1để làm cho hoạt động phát sóng hoạt động.


Ngoài ra, bạn cũng có thể thêm trục mới vào mảng

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
4: : Bạn cũng có thể sử dụng
ValueError: operands could not be broadcast together with shapes (5,) (3,)
2thay cho
 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
1; Đây là những đối tượng trong thực tế.

In [13]: np.newaxis is None
Out[13]: True

Lưu ý : Quan sát rằng chúng tôi nhận được cùng một kết quả trong cả hai trường hợp (nhưng một trường hợp là chuyển vị của trường hợp khác).newaxis vs reshape để thêm kích thước

Kịch bản-3 : Điều này tương tự như kịch bản-1. Nhưng, bạn có thể sử dụng

 x1 = np.array([1, 2, 3, 4, 5])
 x2 = np.array([5, 4, 3])
1nhiều lần để quảng bá mảng lên kích thước cao hơn. Một hoạt động như vậy đôi khi là cần thiết cho các mảng thứ tự cao hơn ( ví dụ như Tenors ). 2 bình luận chia sẻ