This is related to my question, here.
I now have the updated code as follows:
import numpy as np
import _pickle as cPickle
from PIL import Image
import sys,os
pixels = []
labels = []
traindata = []
i = 0
directory = 'C:\\Users\\abc\\Desktop\\Testing\\images'
for root, dirs, files in os.walk(directory):
for file in files:
floc = file
im = Image.open(str(directory) + '\\' + floc)
pix = np.array(im.getdata())
pixels.append(pix)
labels.append(1)
pixels = np.array(pixels)
labels = np.array(labels)
traindata.append(pixels)
traindata.append(labels)
traindata = np.array([traindata[i][i],traindata[1]], dtype=object)
i = i + 1
# do the same for validation and test data
# put all data and labels into 'data' array
cPickle.dump(traindata,open('data.pickle','wb'))
FILE = open("data.pickle", 'rb')
content = cPickle.load(FILE)
print (content)
When having only one image, the code runs fine. But, when I add another image or more, I get the following:
Traceback (most recent call last):
File "pickle_data.py", line 17, in <module>
pixels.append((pix))
AttributeError: 'numpy.ndarray' object has no attribute 'append'
How can I solve this issue?
Thanks.
The numpy. ndarray does not have an append method, and hence it throws AttributeError. We can resolve this error by using the numpy. append() method provided by the NumPy library.
The Python "AttributeError module 'numpy' has no attribute 'array'" occurs when we have a local file named numpy.py and try to import from the numpy module. To solve the error, make sure to rename any local files named numpy.py . Here is an example of how the error occurs in a file called numpy.py .
The Python "AttributeError: 'NoneType' object has no attribute 'append'" occurs when we try to call the append() method on a None value, e.g. assignment from a function that doesn't return anything. To solve the error, make sure to only call append() on list objects.
Numpy arrays do not have an append method. Use the Numpy append function instead:
import numpy as np
array_3 = np.append(array_1, array_2, axis=n)
# you can either specify an integer axis value n or remove the keyword argument completely
For example, if array_1 and array_2 have the following values:
array_1 = np.array([1, 2])
array_2 = np.array([3, 4])
If you call np.append without specifying an axis value, like so:
array_3 = np.append(array_1, array_2)
array_3 will have the following value:
array([1, 2, 3, 4])
Else, if you call np.append with an axis value of 0, like so:
array_3 = np.append(array_1, array_2, axis=0)
array_3 will have the following value:
array([[1, 2],
[3, 4]])
More information on the append function here: https://docs.scipy.org/doc/numpy/reference/generated/numpy.append.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With