TypeError:数据类型不明,numpy.zeros

时间:2018-06-21 16:06:25

标签: python numpy for-loop typeerror zero

运行代码时出现错误。我收到的错误是:

Traceback (most recent call last):
File "/Users/penguin/PycharmProjects/Greatness/venv/Recipes.py", line 
153, in <module>
newRatios = np.zeros(count,count)
TypeError: data type not understood

Process finished with exit code 1

我的代码是:

count1 = 0
count2 = 0
newRatios = np.zeros(count,count)
print(newRatios)
for ep in XDF['EmailPrefix']:
   for ep2 in XDF['EmailPrefix']:
       if count1 != count2:
           newRatios[count1,count2] = fuzz.token_sort_ratio(ep,ep2)
       else:
           newRatios[count1,count2] = None
       count2 += 1
   count1 += 1
   if(count1 == 2500):
       print('Halfway')

print(newRatios)

变量数代表一个大约5000的整数。对不起,我只能给出代码段而不是整个文件,但是我不允许透露整个文件。

不太确定为什么会出现此错误,我尝试了几种不同的方法来设置numpy零数组和设置2D矩阵。请注意,我将numpy导入为np,因此这就是为什么将其称为np的原因。我正在使用python3,如果您还有其他建议来设置2D数组并比在这里更好地访问它,也将不胜感激。

3 个答案:

答案 0 :(得分:1)

您需要传递一个元组。尝试np.zeros((count, count))

有关此方法的更多文档,请参见: https://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros.html

答案 1 :(得分:0)

使用整数序列:

newRatios = np.zeros((count,count))

zeros的Shape参数接受int或int序列。请参阅docs

答案 2 :(得分:0)

np.zeros接受iterable作为shape参数。您需要将参数传递为np.zeros((count,count))。注意多余的括号。您当前正在做的是将count作为shape传入,然后再次作为数据类型传入count。它无法识别count表示的数据类型,因此会出错。