Numpy multidimensional array assigment unknown logic error

  • Thread starter NotASmurf
  • Start date
I'm confused as to why this bubble sort I'm implementing is setting _all_ items to one of the items (I have no idea which one as array is too big)

the data type is of
Python:
...
[[1128 1026 1192 1023]]
[[ 771  195  858  196]]
[[ 953 1799  955 1738]]]
when I have an array of int, this same algorithm sorts it perfectly, I presume my issue is that I do not understand multidimensional numpy array element assigment, please explain why this breaks:

Python:
lines = cv2.HoughLinesP(edges, rho, theta, threshold, np.array([]),
                    min_line_length, max_line_gap)
#sort by y
if(0==0):
    for i in range(0,len(lines)):
        for j in range(0,len(lines)):
            if(lines[i][0][1]<lines[j][0][1]):
                cnt = lines[i][0]
                lines[i][0] = lines[j][0]
                lines[j][0] = cnt
now the array is

Python:
[[[ 738 1831  867 1831]]
...
[[ 738 1831  867 1831]]
[[ 738 1831  867 1831]]
[[ 738 1831  867 1831]]]
why?
 
32,344
4,130
I'm confused as to why this bubble sort I'm implementing is setting _all_ items to one of the items (I have no idea which one as array is too big)

the data type is of
Python:
...
[[1128 1026 1192 1023]]
[[ 771  195  858  196]]
[[ 953 1799  955 1738]]]
when I have an array of int, this same algorithm sorts it perfectly, I presume my issue is that I do not understand multidimensional numpy array element assigment, please explain why this breaks:

Python:
lines = cv2.HoughLinesP(edges, rho, theta, threshold, np.array([]),
                    min_line_length, max_line_gap)
#sort by y
if(0==0):
    for i in range(0,len(lines)):
        for j in range(0,len(lines)):
            if(lines[i][0][1]<lines[j][0][1]):
                cnt = lines[i][0]
                lines[i][0] = lines[j][0]
                lines[j][0] = cnt
now the array is

Python:
[[[ 738 1831  867 1831]]
...
[[ 738 1831  867 1831]]
[[ 738 1831  867 1831]]
[[ 738 1831  867 1831]]]
why?
I think it's likely that you haven't defined your array correctly. See http://cs231n.github.io/python-numpy-tutorial/#numpy-arrays

Here's an example from the page in the link:
Python:
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
This is a two-dimensional array. In Python-speak, it's a list of lists. Notice that the elements in each list are separated by commas, and that the sublists themselves are also separated by commas.

When an arrays is printed, commas aren't used, but they need to be there when you define the array.
 

Want to reply to this thread?

"Numpy multidimensional array assigment unknown logic error" You must log in or register to reply here.

Physics Forums Values

We Value Quality
• Topics based on mainstream science
• Proper English grammar and spelling
We Value Civility
• Positive and compassionate attitudes
• Patience while debating
We Value Productivity
• Disciplined to remain on-topic
• Recognition of own weaknesses
• Solo and co-op problem solving
Top