>>> a = np.array([[1,2,3],[4,5,6]])
array([[1, 2, 3],
[4, 5, 6]])
>>> a[:,1]
array([2, 5])
>>> a[:,1].astype('str') # This generates copy and then cast.
array(['2', '5'], dtype='<U21')
>>> a # So the original array did not change.
array([[1, 2, 3],
[4, 5, 6]])
4条答案
按热度按时间00jrzges1#
举一个简单的例子会更好地解释它。
j8yoct9x2#
让我回答第二个问题,因为我遇到了同样的问题。
正如dinarkino所提到的,仅仅将类型赋值回去是行不通的。
因此,我的方法是首先将整个矩阵的dtypes赋给“object”,然后再将str数据类型赋回来。
sxpgvts33#
更明确和直接的答案。类型未更改为str,因为NumPy数组应该只有一种数据类型。更改X的列类型的正确方法是使用structured arrays或此question中的一种解决方案。
我也有同样的问题,我不想使用结构化数组。一个可能的选择是使用pandas,如果它适合您的任务。如果你只想改变一列,这可能意味着你的数据是表格式的。然后您可以轻松地更改列的数据类型。另一种折衷方法是复制列,并将其与原始数组分开使用。
9rnv2umw4#
当我面临同样的问题时,我使用了这个快速的一行解决方案
可能有点过于复杂,但工作。:)