Arrays Python数组追加向量,然后按位置(而不是按元素)对数组的元素求和
首先,我解释我想做什么。我有一个函数,它给了我一些列表。这些列表具有相同数量的元素,并且包含表示x轴上位置的数字。例如,其中一个是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、-
[-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,我将获得第一个列表,依此类推