Hướng dẫn combine 3 arrays into a matrix python - kết hợp 3 mảng thành một ma trận python

1

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có 3 mảng có độ dài bằng nhau [ví dụ:]:

  1. >>> a, b, c = np.random.randint[0, 9, 9].reshape[3, 3]
    >>> print[a, b, c]
    [4 1 4] [5 8 5] [3 0 2]
    
    7
  2. >>> a, b, c = np.random.randint[0, 9, 9].reshape[3, 3]
    >>> print[a, b, c]
    [4 1 4] [5 8 5] [3 0 2]
    
    8
  3. >>> a, b, c = np.random.randint[0, 9, 9].reshape[3, 3]
    >>> print[a, b, c]
    [4 1 4] [5 8 5] [3 0 2]
    
    9

Tôi muốn kết hợp chúng thành một ma trận:

|a, 1, i  |
|b, 2, ii |
|c, 3, iii|

Vấn đề tôi gặp phải là khi tôi sử dụng các mã như

>>> np.vstack[[a, b, c]].T
array[[[4, 5, 3],
       [1, 8, 0],
       [4, 5, 2]]]
0,
>>> np.vstack[[a, b, c]].T
array[[[4, 5, 3],
       [1, 8, 0],
       [4, 5, 2]]]
1 hoặc
>>> np.vstack[[a, b, c]].T
array[[[4, 5, 3],
       [1, 8, 0],
       [4, 5, 2]]]
2. Tôi nhận được chúng được thêm vào số lượng hoặc xếp chồng lên nhau theo kiểu mà tôi có thể làm việc cùng.

Dirtybit

16.3k4 Huy hiệu vàng30 Huy hiệu bạc54 Huy hiệu đồng4 gold badges30 silver badges54 bronze badges

Đã hỏi ngày 31 tháng 1 năm 2019 lúc 11:59Jan 31, 2019 at 11:59

5

Giả sử rằng bạn có 3 mảng numpy:

>>> a, b, c = np.random.randint[0, 9, 9].reshape[3, 3]
>>> print[a, b, c]
[4 1 4] [5 8 5] [3 0 2]

Sau đó, bạn có thể xếp chúng theo chiều dọc [nghĩa là dọc theo chiều đầu tiên], sau đó chuyển ma trận kết quả để có được thứ tự bạn cần:

>>> np.vstack[[a, b, c]].T
array[[[4, 5, 3],
       [1, 8, 0],
       [4, 5, 2]]]

Thay vào đó, một ví dụ dài hơn một chút là xếp theo chiều ngang, nhưng điều này đòi hỏi các mảng của bạn được tạo thành 2D bằng cách sử dụng

>>> np.vstack[[a, b, c]].T
array[[[4, 5, 3],
       [1, 8, 0],
       [4, 5, 2]]]
3:

>>> np.hstack[[a.reshape[3, 1], b.reshape[3, 1], c.reshape[3, 1]]]
array[[[4, 5, 3],
       [1, 8, 0],
       [4, 5, 2]]]

Đã trả lời ngày 31 tháng 1 năm 2019 lúc 12:15Jan 31, 2019 at 12:15

Hannes Ovrénhannes OvrénHannes Ovrén

20,5K8 Huy hiệu vàng67 Huy hiệu bạc75 Huy hiệu Đồng8 gold badges67 silver badges75 bronze badges

Bạn có thể sử dụng zip []:

Bản đồ chỉ số tương tự của nhiều container để chúng có thể được sử dụng chỉ bằng cách sử dụng như một thực thể đơn lẻ.

a1 = ['a', 'b', 'c']

b1 = ['1', '2', '3']

c1 =  ['i', 'ii', 'iii']


print[list[zip[a1,b1,c1]]]

OUTPUT:

[['a', '1', 'i'], ['b', '2', 'ii'], ['c', '3', 'iii']]

EDIT:

Tôi chỉ nghĩ đến việc bước về phía trước, làm thế nào về việc làm phẳng danh sách sau đó và sau đó sử dụng

>>> np.vstack[[a, b, c]].T
array[[[4, 5, 3],
       [1, 8, 0],
       [4, 5, 2]]]
4

flattened_list = []

#flatten the list
for x in res:
    for y in x:
        flattened_list.append[y]

#print[flattened_list]

import numpy as np
data = np.array[flattened_list]
shape = [3, 3]
print[data.reshape[ shape ]]

OUTPUT:

[['a' '1' 'i']
 ['b' '2' 'ii']
 ['c' '3' 'iii']]

HOẶC

Đối với một lớp lót ngoài kia:

#flatten the list
for x in res:
    for y in x:
        flattened_list.append[y]

# print[flattened_list]

print[[flattened_list[i:i+3] for i in range[0, len[flattened_list], 3]]]

OUTPUT:

[['a', '1', 'i'], ['b', '2', 'ii'], ['c', '3', 'iii']]

HOẶC

Đối với một lớp lót ngoài kia:

>>> a, b, c = np.random.randint[0, 9, 9].reshape[3, 3]
>>> print[a, b, c]
[4 1 4] [5 8 5] [3 0 2]
0

OUTPUT:

>>> a, b, c = np.random.randint[0, 9, 9].reshape[3, 3]
>>> print[a, b, c]
[4 1 4] [5 8 5] [3 0 2]
1

Theo đề xuất của @norok2Jan 31, 2019 at 12:02

3

Đã trả lời ngày 31 tháng 1 năm 2019 lúc 12:02

>>> a, b, c = np.random.randint[0, 9, 9].reshape[3, 3]
>>> print[a, b, c]
[4 1 4] [5 8 5] [3 0 2]
2

Điều này cung cấp cho bạn một danh sách các bộ dữ liệu, có thể không phải là những gì bạn muốn:

>>> a, b, c = np.random.randint[0, 9, 9].reshape[3, 3]
>>> print[a, b, c]
[4 1 4] [5 8 5] [3 0 2]
3

Điều này cung cấp cho bạn một mảng numpy:Jan 31, 2019 at 12:06

Đã trả lời ngày 31 tháng 1 năm 2019 lúc 12:06Benoît P

Benoît pbenoît p12 silver badges31 bronze badges

3.08512 huy hiệu bạc31 huy hiệu đồng

Nếu bạn có các loại dữ liệu khác nhau trong mỗi mảng, thì sẽ có ý nghĩa khi sử dụng
>>> np.vstack[[a, b, c]].T
array[[[4, 5, 3],
       [1, 8, 0],
       [4, 5, 2]]]
5 cho điều này:

>>> a, b, c = np.random.randint[0, 9, 9].reshape[3, 3]
>>> print[a, b, c]
[4 1 4] [5 8 5] [3 0 2]
4

>>> a, b, c = np.random.randint[0, 9, 9].reshape[3, 3]
>>> print[a, b, c]
[4 1 4] [5 8 5] [3 0 2]
5

Bây giờ bạn có cấu trúc bạn mong muốn, với các loại dữ liệu phù hợp cho mỗi cột:

>>> a, b, c = np.random.randint[0, 9, 9].reshape[3, 3]
>>> print[a, b, c]
[4 1 4] [5 8 5] [3 0 2]
6

Bạn có thể trích xuất mảng

>>> np.vstack[[a, b, c]].T
array[[[4, 5, 3],
       [1, 8, 0],
       [4, 5, 2]]]
6 với thuộc tính
>>> np.vstack[[a, b, c]].T
array[[[4, 5, 3],
       [1, 8, 0],
       [4, 5, 2]]]
7:Jan 31, 2019 at 12:43

Đã trả lời ngày 31 tháng 1 năm 2019 lúc 12:43ajrwhite

ajrwhiteajrwhite1 gold badge11 silver badges24 bronze badges

Làm thế nào để bạn hợp nhất 3 mảng trong Python?

Sử dụng hàm numpy.stack [] để tham gia một chuỗi các mảng dọc theo một trục mới.Bạn vượt qua một chuỗi các mảng mà bạn muốn tham gia vào Numpy.Chức năng ngăn xếp [] cùng với trục.Nếu trục không được truyền rõ ràng, nó được lấy là 0. stack[] function to join a sequence of arrays along a new axis. You pass a sequence of arrays that you want to join to the numpy. stack[] function along with the axis. If the axis is not explicitly passed it is taken as zero.

Làm thế nào để bạn xếp 3 mảng?

Dstack xếp mảng dọc theo trục thứ ba, vì vậy, nếu bạn xếp 3 mảng [A, B, C] của hình dạng [N, M], bạn sẽ kết thúc với một mảng hình dạng [N, M, 3].Điều đó cung cấp cho bạn một mảng [3, n, m]., so, if you stack 3 arrays [ a , b , c ] of shape [N,M] , you'll end up with an array of shape [N,M,3] . That gives you a [3,N,M] array.

Làm thế nào để bạn kết hợp các mảng trong Python?

hàm concatenate [] concatenate một chuỗi các mảng dọc theo một trục hiện có ...
Cú pháp: numpy.concatenate [[ARR1, ARR2, Mạnh], trục = 0, out = none].
Thông số :.
ARR1, ARR2, Mạnh: [Trình tự mảng_like] Các mảng phải có hình dạng tương tự, ngoại trừ trong kích thước tương ứng với trục ..

Làm thế nào để bạn tạo một ma trận 3x3 trong Python?

Bạn có thể sử dụng Numpy.Đầu tiên, hãy chuyển đổi danh sách của bạn thành mảng numpy. Sau đó, hãy lấy một phần tử và định hình lại nó thành ma trận 3x3.First, convert your list into numpy array. Then, take an element and reshape it to 3x3 matrix.

Bài Viết Liên Quan

Chủ Đề