Python numpy报TypeError无法将'10000'识别为数据类型如何解决
错误原因
numpy.zeros()的参数规则为:
- 第一个位置传数组形状,必须是单个整数,或者由多个维度长度组成的整数元组
- 第二个位置传数组数据类型(dtype),是可选参数,默认值为
float64
你的代码里写的np.zeros((len(sequences)),dimension),形状位置传入的(len(sequences))由于元组内只有单个元素且没有尾随逗号,Python不会将其识别为元组,只会解析为单个整数值len(sequences),本该属于形状第二维度的dimension(值为10000)被传到了dtype参数的位置。numpy尝试将传入的10000解析为合法的数据类型失败,就抛出了对应的TypeError。
修复方案
把两个维度的长度都放在形状元组里传入即可,修正后的完整代码如下:
import numpy as np def vectorize_sequences(sequences, dimension=10000): # 形状参数为(样本总数, 单条样本的向量维度)的二元元组 results = np.zeros((len(sequences), dimension)) for i, sequence in enumerate(sequences): results[i, sequence] = 1 return results
修正后的代码可以正常完成整数序列的one-hot向量化,是深度学习文本分类任务中常用的序列预处理逻辑。
内容的提问来源于stack exchange,提问作者Rajdeep Naskar
相关产品推荐
相关产品推荐

