Hướng dẫn np.c_ python

numpy.c_= object>#

Translates slice objects to concatenation along the second axis.

This is short-hand for np.r_['-1,2,0', index expression], which is useful because of its common occurrence. In particular, arrays will be stacked along their last axis after being upgraded to at least 2-D with 1’s post-pended to the shape (column vectors made out of 1-D arrays).

See also

column_stack

Stack 1-D arrays as columns into a 2-D array.

r_

For more detailed documentation.

Examples

>>> np.c_[np.array([1,2,3]), np.array([4,5,6])]
array([[1, 4],
       [2, 5],
       [3, 6]])
>>> np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])]
array([[1, 2, 3, ..., 4, 5, 6]])

answer

64

Hướng dẫn np.c_ python

Sử dụng ?cú pháp của IPython để biết thêm thông tin:

In [2]: c_?
Type:       CClass
Base Class: 
String Form:
Namespace:  Interactive
Length:     0
File:       /usr/lib/python2.7/dist-packages/numpy/lib/index_tricks.py
Docstring:
Translates slice objects to concatenation along the second axis.

This is short-hand for ``np.r_['-1,2,0', index expression]``, which is
useful because of its common occurrence. In particular, arrays will be
stacked along their last axis after being upgraded to at least 2-D with
1's post-pended to the shape (column vectors made out of 1-D arrays).

For detailed documentation, see `r_`.

Examples
--------
>>> np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])]
array([[1, 2, 3, 0, 0, 4, 5, 6]])

64 hữu ích 1 bình luận chia sẻ

answer

50

Tôi đã mất rất nhiều thời gian để hiểu nhưng có vẻ như cuối cùng tôi đã hiểu được.

Tất cả những gì bạn phải làm là thêm dọc theo trục thứ hai.

hãy lấy:

np.c_[np.array([1,2,3]), np.array([4,5,6])]

Nhưng không có trục thứ hai. Vì vậy, chúng tôi tinh thần thêm một.

vì vậy hình dạng của cả hai mảng trở thành (3,1).

Vì vậy, hình dạng kết quả sẽ là (3,1 + 1) là (3,2). đó là hình dạng của kết quả -

array([[1, 4],
       [2, 5],
       [3, 6]])

Một ví dụ khác:

np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])]

hình dạng:

np.array([[1,2,3]]) = 1,3

np.array([[4,5,6]]) = 1,3

0vì vậy chúng ta có thể nghĩ về nó là [[0]]=1,1

Vì vậy, kết quả 1,3+1+1+3=1,8

đó là hình dạng của kết quả: array([[1, 2, 3, 0, 0, 4, 5, 6]])

50 hữu ích 1 bình luận chia sẻ

answer

11

Tôi sẽ giải thích điều này như sau. Nó nối mảng đầu tiên của bạn với chiều cuối cùng (trục) của mảng cuối cùng của bạn trong hàm.

Ví dụ:

# both are 2 dimensional array
a = array([[1, 2, 3], [4, 5, 6]])
b = array([[7, 8, 9], [10, 11, 12]])

Bây giờ, chúng ta hãy xem xét np.c_(a, b):

Đầu tiên, hãy xem hình dạng:

Hình dạng của cả a và b là (2, 3). Nối a (2, 3) vào trục cuối cùng của b (3), đồng thời giữ nguyên các trục khác (1) sẽ trở thành

(2, 3 + 3) = (2, 6)

Đó là hình dạng mới.

Bây giờ, chúng ta hãy nhìn vào kết quả:

Trong b, 2 mục ở trục cuối cùng là:

1st: [7, 8, 9]
2nd: [10, 11, 12]

Thêm một vào nó có nghĩa là:

1st item: [1,2,3] + [7,8,9] = [1,2,3,7,8,9]
2nd item: [4,5,6] + [10,11,12] = [4,5,6,10,11,12]

Vì vậy, kết quả là

[
  [1,2,3,7,8,9],
  [4,5,6,10,11,12]
]

Hình dạng của nó là (2, 6)

11 hữu ích 0 bình luận chia sẻ

answer

6

Nó chuyển đổi một số mảng 1D thành một mảng 2D, với kích thước duy nhất của các mảng ban đầu được giữ nguyên như là kích thước thứ nhất của mảng 2D. Nhiều mảng đầu vào được sử dụng làm thứ nguyên thứ 2.

Hãy nghĩ theo cách này: Nếu bạn có chuỗi dữ liệu gồm 30 bản ghi được thu thập thành các mảng 1D riêng biệt, hãy np.c_kết hợp các chuỗi này như bạn làm trong bảng excel: cạnh nhau trong các cột riêng biệt gồm 30, thay vì mở rộng chuỗi đầu tiên.

Ví dụ, 2 mảng bắt đầu:

>>> arrayX = np.array([X1,X2...,X30])
array([X1, X2..., X30])
>>> arrayY = np.array([Y1,Y2...,Y30])
array([Y1, Y2..., Y30])

Hãy xem cách np.c_kết hợp chúng:

>>>arrayC = np.c_(arrayX, arrayY)
array([[X1, Y1],
       [X2, Y2],
       ...
       [X30, Y30]])

Hãy xem nó vẫn còn 30 bản ghi dài như thế nào? Giờ đây, bạn có thể sử dụng thứ nguyên thứ 2 để điều hướng giữa các chuỗi dữ liệu.

Các tài liệu hướng dẫn hơi khó hiểu nói: "dịch lát các đối tượng để nối dọc theo trục thứ hai." Trục thứ hai của cái gì? Có nghĩa là mảng 2D kết quả. Không rõ ràng nếu bạn không biết rằng đây là một biến thể của np.r_, nối dọc theo trục đầu tiên; và cũng như nếu bạn không nghĩ về mảng 1D có một thứ nguyên khác. Nhưng về mặt cú pháp, nó giống như vậy.

Truy vấn hình dạng của các mảng để minh họa điều này:

>>> np.shape(arrayX)
(30,)
>>> np.shape(arrayY)
(30,)
>>> np.shape(arrayC)
(30,2)

Bạn có thể thấy chiều thứ 2, hoặc trục, được tạo bởi np.c_phương pháp này và quá trình nối diễn ra ở đó. Ngược lại:

>>> arrayR = np.r_[array1,array2]
array([X1, X2..., X30, Y1, Y2..., Y30])
>>> np.shape(arrayR)
(60,)

Các np.r_phương pháp concatenates trong chiều đầu tiên, hoặc dọc theo trục đầu tiên.

6 hữu ích 0 bình luận chia sẻ

answer

4

Thực ra nó không phải là một hàm, nó là một đối tượng của lớp CClass.

it is "not a function, so takes no parameters

Trên đây là những gì tài liệu chính thức cho biết. bạn có thể kiểm tra câu hỏi này để biết chi tiết.

numpy.r_ không phải là một hàm. Nó là gì?

4 hữu ích 0 bình luận chia sẻ

answer

2

Một kỹ thuật ngắn để nối các mảng bằng cách sử dụng numpy là np.c_ và np.r_

np.c_ [] nối các mảng dọc theo trục thứ hai nhưng np.r_ [] nối các mảng theo trục thứ nhất

Giả sử:

import numpy as np
a = np.array([[1,2,3],
             [11,22,33]]
             )
b = np.array([[4,5,6],
             [44,55,66]]
             )

hình dạng của a: (2,3) tức là (số hàng, số cột) cũng = (trục 1, trục 2)

hình dạng của b: (2,3) tức là (trục 1, trục 2)

np.r_ nối dọc theo trục đầu tiên nên np.r_ [a, b] cho:

array([[ 1,  2,  3],
       [11, 22, 33],
       [ 4,  5,  6],
       [44, 55, 66]])

tức là sự tương đồng dọc theo các hàng (trục đầu tiên), vì vậy số lượng hàng sẽ tăng lên ở đây.

Trong khi np.c_ [a, b] nối dọc theo trục Thứ hai, tức là các cột ở đây như bên dưới:

array([[ 1,  2,  3,  4,  5,  6],
       [11, 22, 33, 44, 55, 66]])

2 hữu ích 0 bình luận chia sẻ

answer

1

Ví dụ:

Tôi có 2 mảng với các giá trị:
a = [x1,x2,x3]
b = [y1,y2,y3]

và chúng tôi muốn kết hợp chúng lại với nhau rằng chúng ta có một cái gì đó như: [[x1, y2],[x2, y2],[x3, y3]].

Do đó chúng tôi sử dụng numpy.c_[a, b]

import numpy

a = [1,2,3]
b = [4,5,6]  
value = numpy.c_[a,b]

print(value)
# [
#  [1, 4],
#  [2, 5],
#  [3, 6]
# ]

1 hữu ích 0 bình luận chia sẻ

answer

-1

np.c _ [[1,4,5,4,5,3], [1,4,2,4,5,3], [2,4,6,8,9,0]] .. Kết luận này Mảng nằm ngang hoặc nói theo trục 0. Vì vậy, mảng sẽ là

array([[1, 1, 2],
       [4, 4, 4],
       [5, 2, 6],
       [4, 4, 8],
       [5, 5, 9],
       [3, 3, 0]])

Để xác định các hàng, tổng số phần tử / tổng số không có trong mảng

(tức là 18/3) [{len ([1,4,5,4,5,3])} + {len ([1,4,5,4,5,3])} + {len ([2 , 4,6,8,9,0])}] // len ([[1,4,5,4,5,3], [1,4,2,4,5,3], [2, 4,6,8,9,0]])

Vì vậy, The Aboove One Cho 6..SO 6 hàng sẽ ở đó.

Đối với Không có ô, Tổng số phần tử / len (bất kỳ một mảng nào bên trong mảng)

ví dụ: 18 / len ([1,4,5,4,5,3])

Vì vậy, Cột sẽ là 18/6 và Đó là 3.

-1 hữu ích 1 bình luận chia sẻ