如何在不更改进程中的Array元素类型的情况下在数组上使用numpy .reshape函数?这就是我的意思:
letters = ['A', 'B', 'C']
letters_array = np.array(letters)
print letters_array
#['A' 'B' 'C']
print type(letters_array[0])
#<type 'numpy.string_'>
现在,我使用.reshape
letters_array = letters_array.reshape(3, 1)
print letters_array
#[['A']
#['B']
#['C']]
print type(letters_array[0])
#<type 'numpy.ndarray'>
为什么在使用.reshape之后元素类型会从字符串更改为数组?如何保持相同的数据类型?
答案 0 :(得分:4)
首先letters_array
只有一个维度,因此当您将其编入letters_array[0]
时,您会得到一个元素。
letters = ['A', 'B', 'C']
letters_array = np.array(letters)
print letters_array.ndim
# 1
在reshape
数组有两个维度之后,意味着以相同的方式索引会为您提供一行数组(类型为numpy.ndarray
)。要获得单个元素,您必须为每个维度提供一个索引:
letters_array = letters_array.reshape(3, 1)
print letters_array.ndim
# 2
print type(letters_array[0, 0])
# <type 'numpy.string_'>
请注意,两种情况下的元素类型都相同!不要使用type
,最好查看数组的dtype
属性,该属性与数组形状无关:
print letters_array.dtype
# |S1