索引错误:索引只能有一个省略号 ('...')



我有以下numpy4D数组:

import numpy as np
X = np.random.rand(5, 1, 10, 4)
# so for example, first 2 elements:
X[:2]
array([[[[0.27383924, 0.48908027, 0.64997038, 0.20394247],
[0.28361942, 0.33425344, 0.27687327, 0.2549442 ],
[0.91655337, 0.77325791, 0.31945728, 0.82919328],
[0.83989813, 0.65384396, 0.13853182, 0.46299719],
[0.14700217, 0.37591964, 0.8545056 , 0.02064633],
[0.06186759, 0.88515897, 0.84535195, 0.41697788],
[0.9180413 , 0.42174186, 0.55005076, 0.70799608],
[0.68446734, 0.41968608, 0.19013073, 0.16875907],
[0.44687274, 0.62684239, 0.27798323, 0.6355134 ],
[0.8489883 , 0.23450424, 0.53215137, 0.66814813]]],

[[[0.85473496, 0.70600538, 0.70862705, 0.89358703],
[0.80026841, 0.62795239, 0.06190375, 0.41356739],
[0.01792312, 0.82979946, 0.82117873, 0.14904196],
[0.10831188, 0.63943446, 0.20393167, 0.4058673 ],
[0.7966648 , 0.37533761, 0.73456441, 0.36841977],
[0.78459342, 0.34400906, 0.08502799, 0.2625697 ],
[0.57079306, 0.52439791, 0.6417777 , 0.02517128],
[0.84525549, 0.40980805, 0.20189425, 0.39604223],
[0.06425004, 0.75075354, 0.69504595, 0.76566498],
[0.01929747, 0.03261916, 0.32740129, 0.43836062]]]])

选择X每个条目的前两列,我选X[..., :2]。在这个例子中:

X[..., :2][:2]
array([[[[0.27383924, 0.48908027],
[0.28361942, 0.33425344],
[0.91655337, 0.77325791],
[0.83989813, 0.65384396],
[0.14700217, 0.37591964],
[0.06186759, 0.88515897],
[0.9180413 , 0.42174186],
[0.68446734, 0.41968608],
[0.44687274, 0.62684239],
[0.8489883 , 0.23450424]]],

[[[0.85473496, 0.70600538],
[0.80026841, 0.62795239],
[0.01792312, 0.82979946],
[0.10831188, 0.63943446],
[0.7966648 , 0.37533761],
[0.78459342, 0.34400906],
[0.57079306, 0.52439791],
[0.84525549, 0.40980805],
[0.06425004, 0.75075354],
[0.01929747, 0.03261916]]]])

但是我对前两列和最后一列(有点放弃第三列)感兴趣。

X[..., :2, ...,3]
IndexError: an index can only have a single ellipsis ('...')

要求输出:

# the case of first 2 elements of X
array([[[[0.27383924, 0.48908027,  0.20394247],
[0.28361942, 0.33425344,  0.2549442 ],
[0.91655337, 0.77325791,  0.82919328],
[0.83989813, 0.65384396,  0.46299719],
[0.14700217, 0.37591964,  0.02064633],
[0.06186759, 0.88515897,  0.41697788],
[0.9180413 , 0.42174186,  0.70799608],
[0.68446734, 0.41968608,  0.16875907],
[0.44687274, 0.62684239,  0.6355134 ],
[0.8489883 , 0.23450424,  0.66814813]]],

[[[0.85473496, 0.70600538,  0.89358703],
[0.80026841, 0.62795239,  0.41356739],
[0.01792312, 0.82979946,  0.14904196],
[0.10831188, 0.63943446,  0.4058673 ],
[0.7966648 , 0.37533761,  0.36841977],
[0.78459342, 0.34400906,  0.2625697 ],
[0.57079306, 0.52439791,  0.02517128],
[0.84525549, 0.40980805,  0.39604223],
[0.06425004, 0.75075354,  0.76566498],
[0.01929747, 0.03261916,  0.43836062]]]])

作为一种解决方法,您可以设置两个单独的数组:

X[…,:2] X[…,3]

然后合并成一个数组。不完美,但可以工作🙂

最新更新