I may be misunderstanding the question, but doesn't changing the 'sparse'
element using (3;e)$.y as in the documentation for $. do what you want?
----- Original Message -----
From: "Michael Berry" <[EMAIL PROTECTED]>
To: "'Programming forum'" <[email protected]>
Sent: Sunday, December 17, 2006 11:55 AM
Subject: RE: [Jprogramming] Is there a way I can let J know
whatthesparseelement ought to be for the result of a boolean comparison?
Perhaps I wasn't clear. I know I can change the sparse element of an
existing, named array by adding a constant. The array whose sparse element
I
want to change is the unnamed result of a comparison of two integer
arrays,
one of which is sparse. Adding 1 (or any constant) to the sparse array
that
is one argument to the comparison would certainly change its sparse
element,
but that doesn't address my problem.
Fortunately, I am becoming reconciled to the idea of always doing
comparisons whose results are mostly 0.
-Michael
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Richard Donovan
Sent: Saturday, December 16, 2006 4:58 PM
To: [email protected]
Subject: RE: [Jprogramming] Is there a way I can let J know what
thesparseelement ought to be for the result of a boolean comparison?
I guess you could subtract 1 from the array elements pre-
processing, then add it back after?
As a side issue, I did some time/space comparison on the
difference between dyad take {. and dyad copy #
and was somewhat surprised that take-with-fill is much
faster and leaner than copy!
Could someone tell me why please?
ts 'a=:1e7{.1'
0.023078631502 16778048
ts 'b=:1, 9999999#0'
0.0744748285047 33555328
a-:b
1
Thanks in advance
From: "Michael Berry" <[EMAIL PROTECTED]>
Reply-To: Programming forum <[email protected]>
To: "'Programming forum'" <[email protected]>
Subject: [Jprogramming] Is there a way I can let J know what the
sparseelement ought to be for the result of a boolean comparison?
Date: Sat, 16 Dec 2006 16:40:20 -0500
Dear J experts,
In the course of trying to figure out why I sometimes get "out of memory"
errors when I didn't think I had done anything to cause my sparse arrays
to
become dense, I became curious about how J knows what the right sparse
element will be for the result of a Boolean function where one argument is
a
sparse integer array. By experiment, I see that if I compare my sparse
array to a scalar argument, the resulting Boolean array has the
appropriate
sparse element, namely the result of comparing the integer array's sparse
element with the scalar argument:
v1 =.$.100{.3
v2=.$._100{.3
b1=.v1<3
b2=.v2<3
b1
0 | 0
b2
99 | 0
b3=.v1>0
b4=.v2>0
b3
0 | 1
b4
99 | 1
If, on the other hand, I have an array argument, the sparse element of the
resulting array is always 0:
v5=. ?. 100$10
b1 =. v1>v5
b2 =. v1<v5
3 $. b1
0
3 $. b2
0
+/b1
0
+/b2
94
This explains my out of memory problem. b2 is mostly 1, but its sparse
element is 0. It is in the nature of the comparisons I am doing, that I
expect my results to be either mostly 1 or mostly 0 and I know in advance
which. I can, of course, rephrase my comparisons so that the "mostly" case
is always 0, but this sometimes seems unnatural. I don't suppose there is
a
way I could whisper in J's ear to say I'm expecting mostly 1?
-Michael
===============
Michael J. A. Berry
Data Miners, Inc.
+1 617 742 4252
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
_________________________________________________________________
Be the first to hear what's new at MSN - sign up to our free newsletters!
http://www.msn.co.uk/newsletters
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm