切片/矢量化表示法中的Numpy数组聚合

2024-04-19 06:20:01 发布

您现在位置:Python中文网/ 问答频道 /正文

使用np,如何创建一个由两个numpy数组组合而成的新numpy数组?你知道吗

问题是:

x = [[a1,a2],[b1,b2],...] # this is an ndarray
y = [a,b,c,...] # ditto

xnew = [[a1,a2,a],...]

xnew = [([a1,a2],a), ...]

下面是我将如何使用列表和for循环来解决它:

xnew = [(x[i],y[i]) for i in range(len(x))]

我如何使用numpy做同样的事情?你知道吗


Tags: numpyana2列表forisa1np
1条回答
网友
1楼 · 发布于 2024-04-19 06:20:01

这是直接连接的情况-除了y需要转置之外:

In [246]: x = np.array([[1,2],[3,4]])
In [247]: y= np.array([[5,6]])
In [248]: np.concatenate((x,y.T),axis=1)
Out[248]: 
array([[1, 2, 5],
       [3, 4, 6]])

也就是说,以某种方式y必须具有与x一样多的行。column_stackhstack需要相同的转座。你知道吗

numpy中,元组表示法用于结构化数组记录。这需要定义一个化合物dtype。如果您概述了所需的dtype,我可以帮助您构建它。你知道吗

您的评论:

Y can be an arbitrary length list, as can X, so I need to keep them separate..

这是否意味着Y和X中可以有不同数量的项,并且其中一些元组将是完整的?有x项而不是y项,或v.v。?如果是这样的话,那么您就可以测试一下如何使用列表理解和zip工具(常规zip或itertools中的一个)。numpy数组用于大小匹配的列表/数组。你知道吗

zip示例:

In [263]: x = [[1,2],[3,4]]
In [264]: y= [5,6,7]         # not nested

跳过最短的,忽略最长的

In [266]: [(i,j) for i,j in zip(x,y)]
Out[266]: [([1, 2], 5), ([3, 4], 6)]

拉链最长,垫子最短

In [267]: [(i,j) for i,j in itertools.zip_longest(x,y)]
Out[267]: [([1, 2], 5), ([3, 4], 6), (None, 7)]

相关问题 更多 >