我有一个形状为(500, 151296)
的数值数组。下面是数组格式
阵列:
array([[-0.18510018, 0.13180602, 0.32903048, ..., 0.39744213,
-0.01461623, 0.06420607],
[-0.14988784, 0.12030973, 0.34801325, ..., 0.36962894,
0.04133283, 0.04434045],
[-0.3080041 , 0.18728344, 0.36068922, ..., 0.09335024,
-0.11459247, 0.10187756],
...,
[-0.17399777, -0.02492459, -0.07236133, ..., 0.08901921,
-0.17250113, 0.22222663],
[-0.17399777, -0.02492459, -0.07236133, ..., 0.08901921,
-0.17250113, 0.22222663],
[-0.17399777, -0.02492459, -0.07236133, ..., 0.08901921,
-0.17250113, 0.22222663]], dtype=float32)
数组[0]:
array([-0.18510018, 0.13180602, 0.32903048, ..., 0.39744213,
-0.01461623, 0.06420607], dtype=float32)
我还有另一个列表,它的停用词大小与NumPy数组形状相同
停用词=[‘no’,‘not’,‘in’......]
我想将每个停顿字添加到有500个元素的NumPy数组中。下面是我用来添加的代码
for i in range(len(stopwords)):
array = np.append(array[i], str(stopwords[i]))
我收到以下错误
IndexError Traceback (most recent call last)
<ipython-input-45-361e2cf6519b> in <module>
1 for i in range(len(stopwords)):
----> 2 array = np.append(array[i], str(stopwords[i]))
IndexError: index 2 is out of bounds for axis 0 with size 2
所需输出:
数组[0]:
array([-0.18510018, 0.13180602, 0.32903048, ..., 0.39744213,
-0.01461623, 0.06420607, 'no'], dtype=float32)
有人能告诉我我哪里做错了吗?
2条答案
按热度按时间dw1jzc5e1#
您所做的错误是覆盖了for循环中的变量
array
:但是,在for循环中使用
np.append
也是错误的,这几乎总是一个坏主意。你可以做类似这样的事情:
但它也是错误的,在没有明显原因的情况下混合数据类型。
我想,你最好还是留着这两个数组吧。
根据您正在做的事情,您可以按如下方式迭代它们:
8ulbf1ek2#
让我们来试一试调试。
从较小的浮点数组开始:
出现错误时,请查看
i
和arr
:arr
看起来一点也不像原来的arr
,不是吗?它是一个一维数组,有两个字符串元素。是arr[2]
引发了错误。你明白为什么吗?重新创建
arr
,然后只执行一个步骤:这看起来有点像您想要的第一行,只是它是字符串dtype。但是您不想用这个一维数组替换原来的
arr
,对吗?对此结果执行
i=1
步骤会产生这是
i=2
遇到问题的数组(一个形状(2,)数组)。不要在遇到错误时绝望地举手--通过查看变量并一步一步地测试代码来进行调试。
您尝试的迭代类型确实适用于列表:
列表元素的长度可以不同;列表追加可以就地工作;列表可以包含数字和字符串。所有这些都不适用于NumPy数组。
一般来说,尝试用NumPy数组复制List方法是行不通的。