Array.transpose on [[]] or [[],[]]

R

Ralf Mueller

Hi,

I wondered why [[]].transpose = [] and [[],[]].transpose = []
I expected them to be [[]], because the result would still be an array
of arrays.

Or did I miss anything about these special cases?

Best regards
Ralf
 
S

Sebastian Hungerecker

Ralf said:
I wondered why [[]].transpose = [] and [[],[]].transpose = []
I expected them to be [[]], because the result would still be an array
of arrays.

You can think of [] as an array of 0 arrays in this case.
The number of arrays in the array returned by transpose equals the number
of items in each subarray of the original array. So if that number is 0, it
makes sense that the returned array would also have 0 subarrays.

HTH,
Sebastian
 
R

Ralf Mueller

Sebastian said:
Ralf said:
I wondered why [[]].transpose = [] and [[],[]].transpose = []
I expected them to be [[]], because the result would still be an array
of arrays.

You can think of [] as an array of 0 arrays in this case.
The number of arrays in the array returned by transpose equals the number
of items in each subarray of the original array. So if that number is 0, it
makes sense that the returned array would also have 0 subarrays.

HTH,
Sebastian
Hi Sebastian,
sure, but [[]] has a subarray. so, shouldn't [[]].transpose have one too?
To point it out in a more general way: I thought, if 'transpose' can be
applied to an array, it should behave like an involution:
a.transpose.transpose = a.

anyway, one more thing to remember...


Thanks and best regards
Ralf
 
S

Sebastian Hungerecker

Am Freitag 04 September 2009 11:25:04 schrieb Ralf Mueller:
sure, but [[]] has a subarray. so, shouldn't [[]].transpose have one too?

Well, [[1],[2]] has two subarrays so should [[1],[2]].transpose have two
subarrays too?
As I said, the number of subarrays in the result equals the number of items
per subarray in the source. I find this completely consistent.
To point it out in a more general way: I thought, if 'transpose' can be
applied to an array, it should behave like an involution:
a.transpose.transpose = a.

If both [[]].transpose and [[],[]].transpose would return [[]], that still
wouldn't be true (because then [[],[]].transpose.transpose would be [[]]).
The only way to ensure that [[],[]].transpose.transpose == [[],[]], would be
to make transpose on an array of empty arrays to return self, which would be
totally inconsistent with how transpose usually works.
 
R

Robert Klemme

2009/9/4 Ralf Mueller said:
Sebastian said:
Ralf said:
I wondered why [[]].transpose = [] and [[],[]].transpose = []
I expected them to be [[]], because the result would still be an array
of arrays.

You can think of [] as an array of 0 arrays in this case.
The number of arrays in the array returned by transpose equals the number
of items in each subarray of the original array. So if that number is 0,
it
makes sense that the returned array would also have 0 subarrays.
sure, but [[]] has a subarray. so, shouldn't [[]].transpose have one too? To
point it out in a more general way: I thought, if 'transpose' can be applied
to an array, it should behave like an involution: a.transpose.transpose = a.

anyway, one more thing to remember...

No, [[]].transpose should not have a sub array: [[]] must be seen as a
matrix with one row with no columns. If you transpose it you get a
matrix with no row with one column hence []. It does not matter when
you exchange terms "row" and "columns" in the sentence above.

Personally I would be using a specialized Matrix class anyway if you
need to work with matrices.

Kind regards

robert
 
R

Ralf Mueller

Sebastian said:
Am Freitag 04 September 2009 11:25:04 schrieb Ralf Mueller:
sure, but [[]] has a subarray. so, shouldn't [[]].transpose have one too?

Well, [[1],[2]] has two subarrays so should [[1],[2]].transpose have two
subarrays too?
As I said, the number of subarrays in the result equals the number of items
per subarray in the source. I find this completely consistent.

To point it out in a more general way: I thought, if 'transpose' can be
applied to an array, it should behave like an involution:
a.transpose.transpose = a.

If both [[]].transpose and [[],[]].transpose would return [[]], that still
wouldn't be true (because then [[],[]].transpose.transpose would be [[]]).
Yes, I was contradictory to myself ;(
And a.transpose.transpose = a is true for 'non-degenerated' a.
Have to program a bit more careful (not too much guessing).

thanks again
ralf
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,169
Messages
2,570,919
Members
47,459
Latest member
Vida00R129

Latest Threads

Top