Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy阵列:搜索子阵列_Python_Arrays_Search_Numpy_Dictionary - Fatal编程技术网

Python Numpy阵列:搜索子阵列

Python Numpy阵列:搜索子阵列,python,arrays,search,numpy,dictionary,Python,Arrays,Search,Numpy,Dictionary,基本上,我有一堆numpy数组,每个数组都有一个较大数组中的网站列表。我想,通过用户的输入,基本上返回数组,其中用户的输入是数组的第一个元素。它将返回,用户将输入另一个网站,它将是数组中第一次匹配的第二个元素。例如: bigarray = [['website1','website2', 'website3', 'website4'], ['website1', 'website7', 'website9', 'website3'], ['website1','website2','websit

基本上,我有一堆numpy数组,每个数组都有一个较大数组中的网站列表。我想,通过用户的输入,基本上返回数组,其中用户的输入是数组的第一个元素。它将返回,用户将输入另一个网站,它将是数组中第一次匹配的第二个元素。例如:

bigarray = [['website1','website2', 'website3', 'website4'],
['website1', 'website7', 'website9', 'website3'],
['website1','website2','website5', 'website9','website24','website36']]
基本上,如果有人输入“website1”,它会返回

{'website2':2, 'website7':1}
之后,如果他们输入网站2,它将输出

{'website3':1,"website5":1}
等等。我希望我是清楚的,如果不是,请评论,我会说得更清楚。我不知道如何使这个过程高效快捷,我一直在集思广益,但我只能想出低效的方法。请帮忙

这是我到目前为止所拥有的,但它并没有提供频率词典。我不知道如何在字典中获取频率,也不知道如何获取第二、第三、第四等元素。这仅适用于第一个元素

import numpy as np
import cherrypy as cp

def initialize(self):
    pagearray = np.load("pagearray.npy")

def submit(self, input):
    for i in pagearray:
        if input==i[0]:
            subpagearray += [i[1:]]
            possibilities +=i[0]
    return possibilities
谢谢, F

这是你制作字典的方法,但我不确定你要做什么,所以你可以用它作为模板

我想我知道你要干什么了。如果是这样,请告诉我:

def advanced_dict(a_list=None):
    if a_list is None:
        a_list = []

    index_holder = 0  # Holds the primary dict value
    site_dict = {}  # contains a dict of dicts
    for sub_arr in big_array:
        for site in sub_arr:
            try:
                site_dict['website'+str(index_holder)]
            except KeyError:
                site_dict['website'+str(index_holder)] = {} # if no dict create dict
            try:
                site_dict['website'+str(index_holder)][site] += 1
            except KeyError:
                site_dict['website'+str(index_holder)][site] = 1
            index_holder += 1
        index_holder = 0
    return site_dict

您可以使用更好地解决问题的数据结构。您可以在Python中找到一些选项。尽量避免过早优化,并尽可能简化代码

找到了答案。。。这就是我想要的:

import numpy as np
import simplejson as json
import cherrypy as cp
import operator

global pagearray

def initialize(self):
    global pagearray
    pagearray = np.load("pagearray.npy")
    #return os.path

def getUserPath(self, input):
    subpagearray = []
    possibilities = []
    global pagearray
    for i in pagearray:
        try:
            if input==i[0]:
                subpagearray += [i[1:]]
                possibilities+= [i[1]]
        except IndexError:
            pass
    x = build_dict(possibilities)
    sorted_x = sorted(x.items(), key=operator.itemgetter(1), reverse=True)
    pagearray = subpagearray
    totalelements = len(pagearray)
    returnvaluelist = []
    weight = []
    for i in sorted_x:
        returnvaluelist += [i[0]]
        weight += [(i[1]/(totalelements*1.0))*100]
    return returnvaluelist, weight

def build_dict(a_list=None):
    if a_list is None:
        a_list = []
    site_dict = {}
    for site in a_list:
        try: 
            site_dict[site] = site_dict[site] + 1
        except KeyError:
            site_dict[site] = 1
    return site_dict

哦,不知道你必须发布你的尝试,我会很快更新。尝试部分不起作用。。。try语句中存在语法错误。我正在处理一个庞大的数据集,因此必须对其进行过早的优化:/n不确定这是否是最佳选择。我曾想过,但python似乎没有内置树数据类型。不,没有。不过,您可以找到一些实现,如本文所讨论的:
import numpy as np
import simplejson as json
import cherrypy as cp
import operator

global pagearray

def initialize(self):
    global pagearray
    pagearray = np.load("pagearray.npy")
    #return os.path

def getUserPath(self, input):
    subpagearray = []
    possibilities = []
    global pagearray
    for i in pagearray:
        try:
            if input==i[0]:
                subpagearray += [i[1:]]
                possibilities+= [i[1]]
        except IndexError:
            pass
    x = build_dict(possibilities)
    sorted_x = sorted(x.items(), key=operator.itemgetter(1), reverse=True)
    pagearray = subpagearray
    totalelements = len(pagearray)
    returnvaluelist = []
    weight = []
    for i in sorted_x:
        returnvaluelist += [i[0]]
        weight += [(i[1]/(totalelements*1.0))*100]
    return returnvaluelist, weight

def build_dict(a_list=None):
    if a_list is None:
        a_list = []
    site_dict = {}
    for site in a_list:
        try: 
            site_dict[site] = site_dict[site] + 1
        except KeyError:
            site_dict[site] = 1
    return site_dict