I have 2 numpy arrays: X with shape (..., 12, 3) and Y with shape (..., 12), where the ... is the same in both cases. I get an array of indices using:
idx = np.argmin(Y, axis=-1)
which afterwards I want to use to get the corresponding elements from array X and Y. However, I run into issues due to the extra dimensions. For Y, I can do e.g.
Y[np.arange(Y.shape[0]), idx]
however this requires me to know the shape of ... which will not be the case at all times. How do I do this in a better way?
CodePudding user response:
Okay, since I figured it out, here is the way to do it:
idx = np.argmin(Y, axis=-1)
indices = np.indices(idx.shape)
min_from_X = X[indices[0], ..., idx, :]
min_from_Y = Y[indices[0], ..., idx]
CodePudding user response:
class args: {
. . . = str[]
}
# Inside the arrays you should have put this variable for the arguments;
x = [. . ., 12, 3]
y = [. . ., 12]
class args: {
. . . = str[]
}
# Remove the argument if the item is in the args class,
# simply meaning to remove the args...
if args[. . .] in x: {
pop(x[1])
}
if args[. . .] in y: {
pop(y[1])
}
