
Product
Introducing the Alert Details Page: A Better Way to Explore Alerts
Socket's new Alert Details page is designed to surface more context, with a clearer layout, reachability dependency chains, and structured review.
ndarray-band
Advanced tools
Create a view of a band of an ndarray
First things first, if bands are meaningful in your matrix problem, there's a chance you should really just be dealing with the bands directly using algorithms designed to work with, for example, tridiagonal or Toeplitz matrices. But if you need a band, then this module provides a convenience function to extract a view of a band, i.e. a diagonal with an offset.
Note that for an ndarray of dimension
, since the band is a one-dimensional array, only
offsets are necessary. Thus, the offsets are given for dimensions
.
Also note that for dimensions greater than two, this gets a little confusing. Here's a more precise specification that's not exactly less confusing, but at least it's precise: Given an array
and offsets
,
, ...,
, ndarray-band returns a view of
at

where
is the the first element that falls within the bounds of
and
is the index of the view starting at zero. The length of the band will be such that it only ever contains element within the bounds of
.
To make that actually concrete, the bands of a
matrix are indexed like:
![\left[ \begin{array}{cccc}
c_0 & d_0 & e_0 & f_0 \\
b_0 & c_1 & d_1 & e_1 \\
a_0 & b_1 & c_2 & d_2
\end{array}\right]](https://github.com/scijs/ndarray-band/raw/HEAD/docs/images/left-beginarraycccc-c_0-d_0-e_0-f_0-b_0-c_1-d-0158dede7b.png)
Consider constructing the
1-D discrete Laplacian operator. Of course in any realistic problem you'd obviously want to avoid constructing this at all costs, but there are cases where it's necessary or at least useful to refer to a band view.
var pool = require('ndarray-scratch'),
ops = require('ndarray-ops'),
band = require('ndarray-band')
var A = pool.zeros([10,10])
ops.assigns( band(A,-1), 1 ) // (superdiagonal)
ops.assigns( band(A, 0), -2 ) // (diagonal)
ops.assigns( band(A, 1), 1 ) // (subdiagonal)
// [ -2 1 0 0 0 0 0 0 0 0 ]
// [ 1 -2 1 0 0 0 0 0 0 0 ]
// [ 0 1 -2 1 0 0 0 0 0 0 ]
// [ 0 0 1 -2 1 0 0 0 0 0 ]
// A = [ 0 0 0 1 -2 1 0 0 0 0 ]
// [ 0 0 0 0 1 -2 1 0 0 0 ]
// [ 0 0 0 0 0 1 -2 1 0 0 ]
// [ 0 0 0 0 0 0 1 -2 1 0 ]
// [ 0 0 0 0 0 0 0 1 -2 1 ]
// [ 0 0 0 0 0 0 0 0 1 -2 ]
$ npm install ndarray-band
require('ndarray-band')( A, offsets )Create a view of a band of an ndarray given offsets along the dimensions.
A: the ndarray of dimension
of which to create a viewoffsets: an array of length
containing the offset of the band along the respective dimensions. For the special case
, the band is equal to the original vector so the offset is unused. For the special case
, there is only one offset so a scalar is permitted in place of an array.Returns: a 1-D ndarray starting at element 0 and of whatever length required such that the view will never contain an element outside the original ndarray.
(c) 2015 Ricky Reusser. MIT License
FAQs
Create a view of a band of an ndarray
The npm package ndarray-band receives a total of 3 weekly downloads. As such, ndarray-band popularity was classified as not popular.
We found that ndarray-band demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket's new Alert Details page is designed to surface more context, with a clearer layout, reachability dependency chains, and structured review.

Product
Campaign-level threat intelligence in Socket now shows when active supply chain attacks affect your repositories and packages.

Research
Malicious PyPI package sympy-dev targets SymPy users, a Python symbolic math library with 85 million monthly downloads.