[英]Python Creating Multiple Instances of a Class
我正在嘗試創建一個NumPy對象數組,如下所示......
import numpy as np
class Pixel:
def __init__(self):
self.r = 0
self.g = 0
self.b = 0
class Image:
def __init__(self):
self.pixels = np.full((4, 4), Pixel())
if __name__ == '__main__':
image = Image()
print(image.pixels)
輸出是......
[[<__main__.Pixel object at 0x02A92F70>
<__main__.Pixel object at 0x02A92F70>]
[<__main__.Pixel object at 0x02A92F70>
<__main__.Pixel object at 0x02A92F70>]]
它似乎創建了同一個對象的數組。 我的問題是如何使用每個像素的不同對象初始化數組?
親切的問候
您可以使用np.array
函數並從標准python列表初始化它,如下所示:
class Image:
def __init__(self):
self.pixels = np.array([Pixel() for i in range(2 * 2)]).reshape([2, 2])
結果如下:
[[<__main__.Pixel object at 0x00000218B89F6438>
<__main__.Pixel object at 0x00000218B89F64A8>]
[<__main__.Pixel object at 0x00000218B89F4D68>
<__main__.Pixel object at 0x00000218B89F43C8>]]
如你所見,它們不是同一個對象。
請注意,它不會影響您的時間復雜度,因為在任何情況下您都需要初始化O(n)
對象。
感謝所有的回復,最有幫助。 我發現最適合我的特定情況的方法是使用numpy.empty()方法創建一個正確大小的數組,然后遍歷用新對象填充數組的元素。 它可能不是最有效的,但它對我來說最具可讀性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.