อัปเดตอาร์เรย์ numpy 2d ผ่านวัตถุชิ้น [ซ้ำ]

Dec 02 2020

ดังนั้นฉันจึงค่อนข้างใหม่สำหรับ numpy และการเขียนโปรแกรมโดยทั่วไปและฉันก็ชนะหากมีวิธีใดในการเปลี่ยนอาร์เรย์ numpy ผ่านอาร์เรย์อื่นที่เป็นสไลซ์ตัวอย่างเช่นเรามี:

>>> import numpy as np
>>> a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]])
>>> a
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15]])

และตอนนี้ฉันต้องการคูณค่าทั้งหมดรอบ ๆ และรวม '8' ด้วย 2 ดังนั้นฉันจึงใช้ชิ้น b และเปลี่ยนเป็นดังนี้:

>>> y, x = 1, 2
>>> b = a[y-1:y+2, x-1:x+2]
>>> for i in range(len(b)):
        for x in range(len(b[i])):
            b[i][x] *= 2
>>> b
    array([[ 4,  6,  8],
           [14, 16, 18],
           [24, 26, 28]])

ตอนนี้ฉันต้องการเปลี่ยนค่าเหล่านี้ในอาร์เรย์ a ฉันจะทำอย่างไร?

คำตอบ

adirabargil Dec 02 2020 at 13:08

คุณลอง:

 a[y-1:y+2, x-1:x+2] = a[y-1:y+2, x-1:x+2]*2