[英]How to do indexing of a NumPy 3D-array based on 2D-array in Python?
[英]2D-Array Indexing in python
我想計算文本文件中數組的每個單詞有多少次。 如果在shell中編寫print語句,則得到輸出。 但是當我將其作為文件運行時卻沒有。 我收到此錯誤“ IndexError:列表索引超出范圍”。 我是python的初學者,請幫助我。
from collections import Counter
from array import *
import string
cnt=Counter()
file = open('output.txt', 'r')
word =[ ]
c=[ ]
count =0
first_word =[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
word_count = [ ]
new_array =['CC','CD','DT','EX','FW','IN','JJ','JJR','JJS','LS','MD','NN','NNS','NNP','NNPS','PDT',
'POS','PRP','PRP$','RB','RBR','RBS','RP','SYM','TO','UH','VB','VBD','VBZ','WDT','WP$','WP','WRB']
for line in file:
words = line.split()
word.append(words)
for i in range(0,30):
for j in range(0,33):
if(new_array[j] in word[i][0]):
first_word[j]+=1
else:
continue
print first_word
當您不希望遍歷lists
,不要對range
使用顯式值 ,而要使用要遍歷的lists
長度 。 這樣就不會有索引錯誤 。 因此,請替換:
for i in range(0,30):
for j in range(0,33):
與:
for i in range(len(word)):
for j in range(len(first_word)):
我想它將解決此問題。 同樣,當您必須使用類似的值初始化列表時:
first_word =[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
在python中有一個簡單的方法是這樣的:
>>> first_word = [0]*33
>>> first_word
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
我認為以下代碼應為您提供所需的結果:
wordsFromFile = []
f = open("output.txt", 'r')
for each_line in f:
wordsFromFile.extend(each_line.strip().split(" "))
f.close()
print wordsFromFile
new_array = ['CC','CD','DT','EX','FW','IN','JJ','JJR','JJS','LS','MD','NN','NNS','NNP','NNPS','PDT',
'POS','PRP','PRP$','RB','RBR','RBS','RP','SYM','TO','UH','VB','VBD','VBZ','WDT','WP$','WP','WRB']
first_word = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
for eachWordFromFile in wordsFromFile:
if eachWordFromFile in new_array:
first_word[new_array.index(eachWordFromFile)] += 1
#output results:
for i in range(0,33):
print str(new_array[i]) + ": " + str(first_word[i])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.