正在将列表转换为numpy数组



我已经使用命令行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_等。

相关内容

  • 没有找到相关文章

最新更新