Arrays Python数组追加向量,然后按位置(而不是按元素)对数组的元素求和

Arrays Python数组追加向量,然后按位置(而不是按元素)对数组的元素求和,arrays,list,python-2.7,numpy,Arrays,List,Python 2.7,Numpy,首先,我解释我想做什么。我有一个函数,它给了我一些列表。这些列表具有相同数量的元素,并且包含表示x轴上位置的数字。例如,其中一个是[-11,-6,-5,-4,-1,1,3,4,6,7],另一个是[-11,-6,-5,-3,-1,1,2,4,5,7]。条目将始终为整数并按升序排列 我想多次运行这个函数,最后以一种特定的方式“求和”所有这些向量。假设每个向量都显示一个人在x轴上的位置。我想知道,在赛克q实验结束时,每个位置有多少人。然而,它们并不都从-11开始或在7结束 例如[-13、-8、-3、-

首先,我解释我想做什么。我有一个函数,它给了我一些列表。这些列表具有相同数量的元素,并且包含表示x轴上位置的数字。例如,其中一个是
[-11,-6,-5,-4,-1,1,3,4,6,7]
,另一个是
[-11,-6,-5,-3,-1,1,2,4,5,7]
。条目将始终为整数并按升序排列

我想多次运行这个函数,最后以一种特定的方式“求和”所有这些向量。假设每个向量都显示一个人在x轴上的位置。我想知道,在赛克q实验结束时,每个位置有多少人。然而,它们并不都从-11开始或在7结束

例如
[-13、-8、-3、-1、0、1、2、4、5、7]
[-12、-7、-2、-1、0、1、3、4、5、6]
是函数的其他两个有效输出

我该怎么做

我的想法是创建一个循环,计算函数,将这些列表存储到一个数组中,然后使用一些奇怪的矩阵运算。然而,我完全被卡住了,这是我的尝试,其中
rep\u assign\u time2(n,p,m)
是提供列表的函数:

def many_experiments(n,p,m,q):
    jj = 0
    vector_min = []
    vector_max = []
    a = np.array([])
    while jj < q:
        s = rep_assign_time2(n,p,m)
        a = np.concatenate((a,s), axis = 0)      # I add s as an element of a

    for k in range(a.shape):
        ma = max(a[k])
        mi = min(a[k])
        vector_min.append(mi)
        vector_max.append(ma)
    minimum = min(vector_min)
    maximum = max(vector_max)
def许多实验(n、p、m、q):
jj=0
向量_min=[]
向量_max=[]
a=np.array([])
而jj

然后我就不知道如何创建一个我想要的操作。我已经想了一个小时了,还是不知道。你有什么想法吗?

你在NumPy上很幸运,因为它有一个内置的as。它为我们提供了这样的唯一标签(本例中为轴位置)及其在每个标签上的计数。那么,假设您将列表存储为一个列表,这样一个列表列表作为
a
,您只需执行以下操作即可-

unq,counts = np.unique(A,return_counts=True)
样本运行-

In [33]: A = [[-11, -6, -5, -4, -1, 1, 3, 4, 6, 7], \
    ...:      [-11, -6, -5, -3, -1, 1, 2, 4, 5, 7],\
    ...:      [-13, -8, -3, -1, 0, 1, 2, 4, 5, 7],\
    ...:      [-12, -7, -2, -1, 0, 1, 3, 4, 5, 6]]

In [34]: unq,counts = np.unique(A,return_counts=True)

In [35]: unq
Out[35]: 
array([-13, -12, -11,  -8,  -7,  -6,  -5,  -4,  -3,  -2,  -1,   0,   1,
         2,   3,   4,   5,   6,   7])

In [36]: counts
Out[36]: array([1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 4, 2, 4, 2, 2, 4, 3, 2, 3])

In [40]: import matplotlib.pyplot as plt

In [41]: # Plot the results
    ...: plt.bar(unq, counts, align='center')
    ...: plt.grid()
    ...: plt.show()
    ...: 

所以unq基本上给了我一个列表,其中的元素都是a中的元素,并且只重复了一次。然后计数给了我他们每个人的“频率”@Euler\u Salter是的!你知道了,频率/计数,都一样。添加了一个情节,使其更有意义。非常感谢,我还必须在结尾制作一个条形图,所以谢谢!啊,最后一件事,有没有办法将列表作为元素附加到数组中?我的意思是,不要只是将它们粉碎在一起。我不确定你所说的附加是什么意思,但看看
np.concatenate(A)
你打算实现什么?或者如果您将它们作为列表
L0
L1
,等等。您可以这样做:
np.hstack((L0,L1))
np.vstack((L0,L1))
等等,以获得一个NumPy数组。有点,但有所不同。想象一下python中的普通列表,比如
a=[]
。然后,如果执行
a.append(3)
,将在最后一个位置添加一个元素。我想做同样的事情,但是对于数组,每个元素都是一个列表,而不是一个数字。因此,如果我从数组中获取元素0,我将获得第一个列表,依此类推