无法修改numpy数组

the*_*orm 3 python numpy matplotlib numpy-ndarray

我在 Python 3 中练习图像时遇到了困难:

import numpy as np
from matplotlib.image import imread
photo_data = imread('c:\jpeg.jpg')
photo_data[0,0,1] = 0
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-40-f19579124b68> in <module>()
      1 photo = photo_data
      2 print(type(photo))
----> 3 photo[0,0,1] = 0
      4 plt.imshow(photo_data)

ValueError: assignment destination is read-only
Run Code Online (Sandbox Code Playgroud)

我正在学习一个在线课程,其中这段代码似乎有效,你能告诉我我错了什么吗?

Luk*_*ski 5

当前的问题是该数组被设置为matplotlib只读。确认:

print(photo_data.flags)
Run Code Online (Sandbox Code Playgroud)

你会得到:

C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : False
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
Run Code Online (Sandbox Code Playgroud)

要使其可写,只需:

photo_data.setflags(write=1)
photo_data[0,0,1] = 0
Run Code Online (Sandbox Code Playgroud)