Skip to content

Commit 37e9c5c

Browse files
committed
Generalize findn and findnz for non-1 indices
1 parent 06c6d59 commit 37e9c5c

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

base/array.jl

+2-2
Original file line numberDiff line numberDiff line change
@@ -794,7 +794,7 @@ function findn(A::AbstractMatrix)
794794
I = similar(A, Int, nnzA)
795795
J = similar(A, Int, nnzA)
796796
count = 1
797-
for j=1:size(A,2), i=1:size(A,1)
797+
for j=indices(A,2), i=indices(A,1)
798798
if A[i,j] != 0
799799
I[count] = i
800800
J[count] = j
@@ -811,7 +811,7 @@ function findnz{T}(A::AbstractMatrix{T})
811811
NZs = Array{T,1}(nnzA)
812812
count = 1
813813
if nnzA > 0
814-
for j=1:size(A,2), i=1:size(A,1)
814+
for j=indices(A,2), i=indices(A,1)
815815
Aij = A[i,j]
816816
if Aij != 0
817817
I[count] = i

test/offsetarray.jl

+8
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,14 @@ pmax, ipmax = findmax(parent(A))
369369
@test amax == pmax
370370
@test A[iamax] == amax
371371
@test amax == parent(A)[ipmax]
372+
z = OffsetArray([0 0; 2 0; 0 0; 0 0], (-3,-1))
373+
I,J = findn(z)
374+
@test I == [-1]
375+
@test J == [0]
376+
I,J,N = findnz(z)
377+
@test I == [-1]
378+
@test J == [0]
379+
@test N == [2]
372380

373381
v = OffsetArray([1,1e100,1,-1e100], (-3,))*1000
374382
v2 = OffsetArray([1,-1e100,1,1e100], (5,))*1000

0 commit comments

Comments
 (0)