iHany
#1
Hi,

I’d like to know how to access the rest except for given indices.

For example,

```
A = [1 2; 3 4] # 2 x 2
indices = findall(a -> a == 1, A) # indices = [CartesianIndex(1, 1)]
# _indices = [CartesianIndex(2, 1), CartesianIndex(1, 2), CartesianIndex(2, 2)]
```

Of course, not using `findall(a -> a != 1, A)`

. Instead, a function should look like `except(indices, A) = _indices`

.

iHany
#2
In the 1-d case, this post makes sense, for example,

```
julia> A = [1, 2, 3, 4]
4-element Vector{Int64}:
1
2
3
4
julia> A = -A
4-element Vector{Int64}:
-1
-2
-3
-4
julia> indices = findall(a -> a == -1, A)
1-element Vector{Int64}:
1
julia> A[1:end .!= indices]
3-element Vector{Int64}:
-2
-3
-4
```

Actually, my demand is for 1-d array so my issue is resolved.

BTW, any ideas for n-d arrays?

sudete
#3
One way is to work with logical indices, i.e. boolean flags:

```
A = [1 2; 3 4]
flags = A .== 1
A[.!flags]
```

Another way is using `Not`

from the InvertedIndices package:

```
using InvertedIndices
A = [1 2; 3 4]
indices = findall(a -> a == 1, A)
A[Not(indices)]
```

3 Likes