Python Numpy使用arange修改多维数组中的每个数组
我有一个包含多维形状数组(2400,2)的数据集 我希望能够获取这2400行中的每一行,并将它们修改为从起点和终点(2400行中的每一行中的两个元素)开始的范围。范围总是相同的长度(在我的例子中,长度是60) 例如,如果我有这样的东西:Python Numpy使用arange修改多维数组中的每个数组,python,arrays,numpy,multidimensional-array,Python,Arrays,Numpy,Multidimensional Array,我有一个包含多维形状数组(2400,2)的数据集 我希望能够获取这2400行中的每一行,并将它们修改为从起点和终点(2400行中的每一行中的两个元素)开始的范围。范围总是相同的长度(在我的例子中,长度是60) 例如,如果我有这样的东西: array([[ 78, 82], [ 90, 94], [ 102, 106]]) array([[ 78, 79, 80, 81, 82], [ 90, 91, 92, 93, 94],
array([[ 78, 82],
[ 90, 94],
[ 102, 106]])
array([[ 78, 79, 80, 81, 82],
[ 90, 91, 92, 93, 94],
[ 102, 103, 104, 105, 106]])
我的输出应该是这样的:
array([[ 78, 82],
[ 90, 94],
[ 102, 106]])
array([[ 78, 79, 80, 81, 82],
[ 90, 91, 92, 93, 94],
[ 102, 103, 104, 105, 106]])
我能够做到这一点的唯一方法是使用for循环,但我试图避免在每一行中循环,因为数据集可能变得非常大
谢谢 如果第二列和第一列之间的差异始终为
4
,则可以提取第一列并向其添加[0,1,2,3,4]
数组:
arr = np.array([[ 78, 82],
[ 90, 94],
[ 102, 106]])
arr[:,:1] + np.arange(5)
Out[331]:
array([[ 78, 79, 80, 81, 82],
[ 90, 91, 92, 93, 94],
[102, 103, 104, 105, 106]])
如果第二列和第一列之间的差异总是
4
,则可以提取第一列并向其添加[0,1,2,3,4]
数组:
arr = np.array([[ 78, 82],
[ 90, 94],
[ 102, 106]])
arr[:,:1] + np.arange(5)
Out[331]:
array([[ 78, 79, 80, 81, 82],
[ 90, 91, 92, 93, 94],
[102, 103, 104, 105, 106]])
因为所有的arange都需要等长,所以我们可以沿着第一个条目创建一个arange,然后复制其他条目 例如:
x = np.array([[78, 82],
[90, 94],
[102, 106]])
>>> x[:, :1] + np.arange(0, 1 + x[0, 1] - x[0, 0])
# array([[ 78, 79, 80, 81],
# [ 90, 91, 92, 93],
# [102, 103, 104, 105]])
因为所有的arange都需要等长,所以我们可以沿着第一个条目创建一个arange,然后复制其他条目 例如:
x = np.array([[78, 82],
[90, 94],
[102, 106]])
>>> x[:, :1] + np.arange(0, 1 + x[0, 1] - x[0, 0])
# array([[ 78, 79, 80, 81],
# [ 90, 91, 92, 93],
# [102, 103, 104, 105]])