cuốn sách gpt4 ai đã làm

python - định hình lại danh sách các mảng có nhiều mảng và sau đó định hình lại nó

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 05:41:55 27 4
mua khóa gpt4 Nike

Tôi có một danh sách chứa một số mảng có nhiều hình dạng khác nhau. Tôi muốn định hình lại danh sách mảng này thành một vectơ gọn gàng, sau đó thay đổi từng phần tử trong vectơ, sau đó định hình lại nó về danh sách mảng ban đầu.

Ví dụ:

输入

[numpy.zeros((2,2)), numpy.ones((3,3))]
  • Đầu tiên

sang vectơ

[0,0,0,0,1,1,1,1,1,1,1,1,1,1]
  • thứ hai

Tại một thời điểm chỉ có một phần tử được thay đổi. Ví dụ: thay đổi phần tử đầu tiên 0 thành 2

[0,2,0,0,1,1,1,1,1,1,1,1,1,1]
  • 最后

chuyển đổi nó trở lại

[mảng([[0,2],[0,0]]),mảng([[1,1,1],[1,1,1],[1,1,1]])]

Có thực hiện nhanh chóng không? Cảm ơn bạn rất nhiều.

câu trả lời hay nhất

Có vẻ như việc chuyển đổi sang danh sách và quay lại không hiệu quả. Thay vào đó, tại sao không tìm ra mảng nào để lập chỉ mục (và ở đâu) và chỉ cập nhật chỉ mục đó? Ví dụ

def thay đổi_element(arr1, arr2, ix, value):
which = ix >= arr1.size
mảng = [arr1, mảng2] [mà]
ix = ix - arr1.size nếu còn cái nào khác ix
arr.ravel()[ix] = giá trị

Dưới đây là một số cách sử dụng ví dụ:

>>> mảng1 = np.zeros((2, 2))
>>> mảng2 = np.ones((3, 3))
>>> phần tử thay đổi (arr1, mảng2, 1, 2)
>>> phần tử thay đổi (mảng1, mảng2, 6, 3.14)
>>> mảng1
mảng([[ 0., 2.],
[ 0., 0.]])
>>> mảng2
mảng([[ 1. , 1. , 3.14],
[ 1. , 1. , 1. ],
[ 1. , 1. , 1. ]])
>>> phần tử thay đổi (arr1, mảng2, 7, 3.14)
>>> mảng1
mảng([[ 0., 2.],
[ 0., 0.]])
>>> mảng2
mảng([[ 1. , 1. , 3.14],
[ 3.14, 1. , 1. ],
[ 1. , 1. , 1. ]])

Một số lưu ý - điều này cập nhật mảng. Nó không tạo ra một mảng mới. Nếu bạn thực sự cần tạo một mảng mới, tôi nghĩ bạn có thể np.copy chúng và quay trở lại. Ngoài ra, điều này phụ thuộc vào mảng đang ở làm rối loạn Trước và sau bộ nhớ chia sẻ. tôi không nhớ làm rối loạn Trường hợp chính xác trong đó một mảng mới được trả về thay vì dạng xem mảng ban đầu. .


Khái quát hóa cho nhiều mảng hơn thực sự dễ dàng. Chúng ta chỉ cần duyệt qua danh sách mảng và xem ix Nó có nhỏ hơn kích thước mảng không. Nếu vậy thì chúng ta đã tìm thấy mảng của mình. Nếu không, chúng ta cần bắt đầu với ix trừ đi kích thước của mảng để biểu thị số phần tử mà chúng ta đã lặp lại cho đến nay:

def thay đổi_element(mảng, ix, giá trị):
cho mảng trong mảng:
nếu ix < mảng.size:
arr.ravel()[ix] = giá trị
trở lại
ix -= mảng.size

Bạn có thể gọi nó như trước đây:

Change_element([arr1, arr2], 6, 3.14159)

Về python - định hình lại danh sách các mảng có nhiều mảng và sau đó định hình lại nó, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/33645566/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress