我已经使用命令行sklearn:load_sample_images()
成功地将图像加载到文件夹中
我现在想将其转换为float32
数据类型的numpy.ndarray
格式
我可以使用:np.array(X)
将其转换为np.ndarray
,但np.array(X, dtype=np.float32)
和np.asarray(X).astype('float32')
给了我错误:
ValueError: setting an array element with a sequence.
有办法解决这个问题吗?
from sklearn_theano.datasets import load_sample_images
import numpy as np
kinect_images = load_sample_images()
X = kinect_images.images
X_new = np.array(X) # works
X_new = np.array(X[1], dtype=np.float32) # works
X_new = np.array(X, dtype=np.float32) # does not work
如果你有一个列表列表,你只需要使用。。。
import numpy as np
...
npa = np.asarray(someListOfLists, dtype=np.float32)
根据scipy/numpy文档中的LINK。您只需要在对数组的调用中定义dtype。
如果要将列表转换为数组,则无论如何都需要制作一个新副本,因此
arr = np.array(my_list, dtype='float32')
同样有效。
一个用例是my_list
实际上不是一个列表,而是其他类似列表的对象;在这种情况下,事先显式转换为列表可能会有所帮助。
arr = np.array(list(my_list), dtype='float32')
例如,
my_list = pd.Series([[1], [2], [3]]).values
np.array(my_list) # jagged array; not OK
np.array(list(my_list)) # OK
np.array(my_list.tolist()) # OK
my_list = {'a': [1], 'b': [2]}.values()
np.array(my_list) # jagged array; not OK
np.array(list(my_list)) # OK
若要将嵌套列表强制转换为数组,子列表的形状必须匹配。如果他们不这样做,也许你想沿着某个轴连接子列表。请尝试np.concatenate
/np.r_
/np.c_
等。