ndarray-ops
Advanced tools
Comparing version 0.0.0 to 0.1.0
417
index.js
@@ -1,2 +0,3 @@ | ||
var cwise = require("cwise"); | ||
var cwise = require("cwise") | ||
var ndarray = require("ndarray") | ||
@@ -20,6 +21,18 @@ var assign_ops = { | ||
var op = assign_ops[id] | ||
exports[id] = cwise("array","array","array").body(Function("a","b","c","a=b"+op+"c")).compile() | ||
exports[id+"eq"] = cwise("array","array").body(Function("a","b","a"+op+"=b")).compile() | ||
exports[id+"s"] = cwise("array", "scalar").body(Function("a","b","s","a=b"+op+"s")).compile() | ||
exports[id+"seq"] = cwise("array","scalar").body(Function("a","s","a"+op+"=s")).compile() | ||
exports[id] = cwise({ | ||
args: ["array","array","array"], | ||
body: Function("a","b","c","a=b"+op+"c") | ||
}) | ||
exports[id+"eq"] = cwise({ | ||
args: ["array","array"], | ||
body: Function("a","b","a"+op+"=b") | ||
}) | ||
exports[id+"s"] = cwise({ | ||
args: ["array", "scalar"], | ||
body: Function("a","b","s","a=b"+op+"s") | ||
}) | ||
exports[id+"seq"] = cwise({ | ||
args: ["array","scalar"], | ||
body: Function("a","s","a"+op+"=s") | ||
}) | ||
} | ||
@@ -38,4 +51,10 @@ })() | ||
var op = unary_ops[id] | ||
exports[id] = cwise("array", "array").body(Function("a","b","a="+op+"b")).compile() | ||
exports[id+"eq"] = cwise("array").body(Function("a","a="+op+"a")).compile() | ||
exports[id] = cwise({ | ||
args: ["array", "array"], | ||
body: Function("a","b","a="+op+"b") | ||
}) | ||
exports[id+"eq"] = cwise({ | ||
args: ["array"], | ||
body: Function("a","a="+op+"a") | ||
}) | ||
} | ||
@@ -58,6 +77,18 @@ })() | ||
var op = binary_ops[id] | ||
exports[id] = cwise("array","array","array").body(Function("a", "b", "c", "a=b"+op+"c")).compile() | ||
exports[id+"s"] = cwise("array","array","scalar").body(Function("a", "b", "s", "a=b"+op+"s")).compile() | ||
exports[id+"eq"] = cwise("array", "array").body(Function("a", "b", "a=a"+op+"b")).compile() | ||
exports[id+"seq"] = cwise("array", "scalar").body(Function("a", "s", "a=a"+op+"s")).compile() | ||
exports[id] = cwise({ | ||
args: ["array","array","array"], | ||
body: Function("a", "b", "c", "a=b"+op+"c") | ||
}) | ||
exports[id+"s"] = cwise({ | ||
args: ["array","array","scalar"], | ||
body: Function("a", "b", "s", "a=b"+op+"s") | ||
}) | ||
exports[id+"eq"] = cwise({ | ||
args: ["array", "array"], | ||
body: Function("a", "b", "a=a"+op+"b") | ||
}) | ||
exports[id+"seq"] = cwise({ | ||
args: ["array", "scalar"], | ||
body: Function("a", "s", "a=a"+op+"s") | ||
}) | ||
} | ||
@@ -85,14 +116,16 @@ })() | ||
var f = math_unary[i] | ||
exports[f] = cwise("array", "array") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b) { | ||
a = this.func(b) | ||
exports[f] = cwise({ | ||
args: ["array", "array"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b) { | ||
a = this.func(b) | ||
} | ||
}) | ||
.compile() | ||
exports[f+"eq"] = cwise("array") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a) { | ||
a = this.func(a) | ||
}) | ||
.compile() | ||
exports[f+"eq"] = cwise({ | ||
args: ["array"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a) { | ||
a = this.func(a) | ||
} | ||
}) | ||
} | ||
@@ -109,26 +142,26 @@ })() | ||
exports[f] = cwise("array", "array", "array") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b,c) { | ||
exports[f] = cwise({ | ||
args:["array", "array", "array"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b,c) { | ||
a = this.func(b,c) | ||
}) | ||
.compile() | ||
exports[f+"s"] = cwise("array", "array", "scalar") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b,c) { | ||
} | ||
}) | ||
exports[f+"s"] = cwise({ | ||
args:["array", "array", "scalar"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b,c) { | ||
a = this.func(b,c) | ||
}) | ||
.compile() | ||
exports[f+"eq"] = cwise("array", "array") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b) { | ||
}}) | ||
exports[f+"eq"] = cwise({ args:["array", "array"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b) { | ||
a = this.func(a,b) | ||
}) | ||
.compile() | ||
exports[f+"seq"] = cwise("array", "scalar") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b) { | ||
}}) | ||
exports[f+"seq"] = cwise({ args:["array", "scalar"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b) { | ||
a = this.func(a,b) | ||
}) | ||
.compile() | ||
}}) | ||
} | ||
@@ -145,129 +178,129 @@ })() | ||
var f= math_noncomm[i] | ||
exports[f] = cwise("array", "array", "array") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b,c) { | ||
exports[f] = cwise({ args:["array", "array", "array"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b,c) { | ||
a = this.func(b,c) | ||
}) | ||
.compile() | ||
exports[f+"s"] = cwise("array", "array", "scalar") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b,c) { | ||
}}) | ||
exports[f+"s"] = cwise({ args:["array", "array", "scalar"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b,c) { | ||
a = this.func(b,c) | ||
}) | ||
.compile() | ||
exports[f+"eq"] = cwise("array", "array") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b) { | ||
}}) | ||
exports[f+"eq"] = cwise({ args:["array", "array"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b) { | ||
a = this.func(a,b) | ||
}) | ||
.compile() | ||
exports[f+"seq"] = cwise("array", "scalar") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b) { | ||
}}) | ||
exports[f+"seq"] = cwise({ args:["array", "scalar"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b) { | ||
a = this.func(a,b) | ||
}) | ||
.compile() | ||
exports[f+"op"] = cwise("array", "array", "array") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b,c) { | ||
}}) | ||
exports[f+"op"] = cwise({ args:["array", "array", "array"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b,c) { | ||
a = this.func(c,b) | ||
}) | ||
.compile() | ||
exports[f+"ops"] = cwise("array", "array", "scalar") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b,c) { | ||
}}) | ||
exports[f+"ops"] = cwise({ args:["array", "array", "scalar"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b,c) { | ||
a = this.func(c,b) | ||
}) | ||
.compile() | ||
exports[f+"opeq"] = cwise("array", "array") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b) { | ||
}}) | ||
exports[f+"opeq"] = cwise({ args:["array", "array"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b) { | ||
a = this.func(b,a) | ||
}) | ||
.compile() | ||
exports[f+"opseq"] = cwise("array", "scalar") | ||
.begin(Function("this.func=Math."+f)) | ||
.body(function(a,b) { | ||
}}) | ||
exports[f+"opseq"] = cwise({ args:["array", "scalar"], | ||
pre: Function("this.func=Math."+f), | ||
body: function(a,b) { | ||
a = this.func(b,a) | ||
}) | ||
.compile() | ||
}}) | ||
} | ||
})() | ||
exports.any = cwise("array") | ||
.body(function(a) { | ||
exports.any = cwise({ args:["array"], | ||
body: function(a) { | ||
if(a) { | ||
return true | ||
} | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return false | ||
}) | ||
.compile() | ||
}}) | ||
exports.all = cwise("array") | ||
.body(function(a) { | ||
exports.all = cwise({ args:["array"], | ||
body: function(a) { | ||
if(!a) { | ||
return false | ||
} | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return true | ||
}) | ||
.compile() | ||
}}) | ||
exports.sum = cwise("array") | ||
.begin(function() { | ||
exports.sum = cwise({ args:["array"], | ||
pre: function() { | ||
this.sum = 0 | ||
}) | ||
.body(function(a) { | ||
}, | ||
body: function(a) { | ||
this.sum += a | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return this.sum | ||
}) | ||
.compile() | ||
}}) | ||
exports.prod = cwise("array") | ||
.begin(function() { | ||
exports.prod = cwise({ args:["array"], | ||
pre: function() { | ||
this.prod = 1 | ||
}) | ||
.body(function(a) { | ||
}, | ||
body: function(a) { | ||
this.prod *= a | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return this.prod | ||
}) | ||
.compile() | ||
}}) | ||
exports.norm2squared = cwise("array") | ||
.begin(function() { | ||
exports.norm2squared = cwise({ args:["array"], | ||
pre: function() { | ||
this.sum = 0 | ||
}) | ||
.body(function(a) { | ||
}, | ||
body: function(a) { | ||
this.sum += a*a | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return this.sum | ||
}) | ||
.compile() | ||
}}) | ||
exports.norm2 = cwise("array") | ||
.begin(function() { | ||
exports.norm2 = cwise({ args:["array"], | ||
pre: function() { | ||
this.sum = 0 | ||
}) | ||
.body(function(a) { | ||
}, | ||
body: function(a) { | ||
this.sum += a*a | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return Math.sqrt(this.sum) | ||
}) | ||
.compile() | ||
}}) | ||
exports.norminf = cwise("array") | ||
.begin(function() { | ||
exports.norminf = cwise({ args:["array"], | ||
pre: function() { | ||
this.n = 0 | ||
}) | ||
.body(function(a) { | ||
}, | ||
body: function(a) { | ||
if(a<0){ | ||
@@ -280,55 +313,54 @@ if(-a<this.n){ | ||
} | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return this.n | ||
}) | ||
.compile() | ||
}}) | ||
exports.norm1 = cwise("array") | ||
.begin(function() { | ||
exports.norm1 = cwise({ args:["array"], | ||
pre: function() { | ||
this.sum = 0 | ||
}) | ||
.body(function(a) { | ||
}, | ||
body: function(a) { | ||
this.sum += a < 0 ? -a : a | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return this.sum | ||
}) | ||
.compile() | ||
}}) | ||
exports.sup = cwise("array") | ||
.begin(function() { | ||
exports.sup = cwise({ args:["array"], | ||
pre: function() { | ||
this.hi = Number.NEGATIVE_INFINITY | ||
}) | ||
.body(function(a) { | ||
}, | ||
body: function(a) { | ||
if(a > this.hi) { | ||
this.hi = a | ||
} | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return this.hi | ||
}) | ||
.compile() | ||
}}) | ||
exports.inf = cwise("array") | ||
.begin(function() { | ||
exports.inf = cwise({ args:["array"], | ||
pre: function() { | ||
this.lo = Number.POSITIVE_INFINITY | ||
}) | ||
.body(function(a) { | ||
}, | ||
body: function(a) { | ||
if(a < this.lo) { | ||
this.lo = a | ||
} | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return this.lo | ||
}) | ||
.compile() | ||
}}) | ||
exports.argmin = cwise("index", "array") | ||
.begin(function(i) { | ||
exports.argmin = cwise({ args:["index", "array"], | ||
pre: function(i) { | ||
this.min_v = Number.POSITIVE_INFINITY | ||
this.min_i = i.slice(0) | ||
}) | ||
.body(function(i, a) { | ||
}, | ||
body: function(i, a) { | ||
if(a < this.min_v) { | ||
@@ -340,14 +372,14 @@ this.min_v = a | ||
} | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return this.min_i | ||
}) | ||
.compile() | ||
}}) | ||
exports.argmax = cwise("index", "array") | ||
.begin(function(i) { | ||
exports.argmax = cwise({ args:["index", "array"], | ||
pre: function(i) { | ||
this.max_v = Number.NEGATIVE_INFINITY | ||
this.max_i = i.slice(0) | ||
}) | ||
.body(function(i, a) { | ||
}, | ||
body: function(i, a) { | ||
if(a > this.max_v) { | ||
@@ -359,27 +391,36 @@ this.max_v = a | ||
} | ||
}) | ||
.end(function() { | ||
}, | ||
post: function() { | ||
return this.max_i | ||
}) | ||
.compile() | ||
}}) | ||
exports.random = cwise("array") | ||
.begin(function() { | ||
exports.random = cwise({ args:["array"], | ||
pre: function() { | ||
this.rnd = Math.random | ||
}) | ||
.body(function(a) { | ||
}, | ||
body: function(a) { | ||
a = this.rnd() | ||
}) | ||
.compile() | ||
}}) | ||
exports.assign = cwise("array", "array") | ||
.body(function(a,b) { | ||
exports.assign = cwise({ args:["array", "array"], | ||
body: function(a,b) { | ||
a = b | ||
}) | ||
.compile() | ||
}}) | ||
exports.assigns = cwise("array", "scalar") | ||
.body(function(a,b) { | ||
exports.assigns = cwise({ args:["array", "scalar"], | ||
body: function(a,b) { | ||
a = b | ||
}) | ||
.compile() | ||
}}) | ||
exports.clone = function(array) { | ||
var stride = new Array(array.shape.length) | ||
var tsz = 1; | ||
for(var i=array.shape.length-1; i>=0; --i) { | ||
stride[i] = tsz | ||
tsz *= array.shape[i] | ||
} | ||
var result = ndarray(array.data.slice(0, tsz), array.shape.slice(0), stride, 0) | ||
return exports.assign(result, array) | ||
} |
{ | ||
"name": "ndarray-ops", | ||
"version": "0.0.0", | ||
"version": "0.1.0", | ||
"description": "Common operations for ndarray arrays", | ||
@@ -11,7 +11,7 @@ "main": "index.js", | ||
"dependencies": { | ||
"cwise": "~0.0.0" | ||
"cwise": "~0.1", | ||
"ndarray": "~0.2" | ||
}, | ||
"devDependencies": { | ||
"tap": "~0.4.0", | ||
"ndarray": "~0.0.2" | ||
"tap": "~0.4.0" | ||
}, | ||
@@ -37,2 +37,2 @@ "scripts": { | ||
"gitHead": "dbc9e44102e02575a0de5feb71b47674422d8e49" | ||
} | ||
} |
@@ -51,3 +51,3 @@ ndarray-ops | ||
=========== | ||
This library implements component-wise operations for all of the operators and Math.* functions in JS, along with a few commonly used aggregate operations. Most of the functions in the library work by applying some commutative binary operator to a pair of arrays. You call them like this: | ||
This library implements component-wise operations for all of the operators and Math.* functions in JS, along with a few commonly used aggregate operations. Most of the functions in the library work by applying some symmetric binary operator to a pair of arrays. You call them like this: | ||
@@ -139,2 +139,10 @@ ```javascript | ||
### Copying | ||
You can also copy ndarrays using the clone() method. For example: | ||
```javascript | ||
var n = ops.clone(a) | ||
``` | ||
### Nullary operators | ||
@@ -185,2 +193,3 @@ Nullary operators only take on argument for the array they are assigning to, and don't have any variations. Currently there is only one of these: | ||
### Map-reduce (aggregate) operators | ||
Finally, there are aggregate operators that take an array as input and compute some aggregate result or summary. These functions don't have any special suffixes and all of them take a single array as input. | ||
@@ -187,0 +196,0 @@ * any - Check if any element of the array is truthy |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
16391
1
394
209
2
25
+ Addedndarray@~0.2
+ Addedcwise@0.1.2(transitive)
+ Addedndarray@0.2.4(transitive)
- Removedcwise@0.0.0(transitive)
Updatedcwise@~0.1