Qu

cols

Builtin index · Core maths

result = rows(A)

Input: A · Output: result

What it is

Row / column count of A. On a Vec (shape (n, 1)), a Mat/Signal (shape (r, c)), or a bare scalar (shape (1, 1)), returns the corresponding dimension as a scalar Num. On a Table, returns the same values as nrow(df)/ncol(df) — row count is the record count, column count the field count.

Overloads

One call shape — this function is not overloaded.

CodeInputOutputDescription
result = rows(A)
A Vec, Mat, Signal, scalar, Num, or Tablenot documented yet
result scalar or Num
Returns a scalar Num.

Examples

From the documentation, and run by the build -- the output and the figure below are what the engine actually produced. Simplest first.

df = table(a = randn(30, seed = 3), b = randn(30, seed = 4), c = randn(30, seed = 5))
eda(df)   # correlation heatmap + one histogram per numeric column, auto-gridded

print("columns: " + str(cols(df)))
output
columns: 3
a, a: 1 1 a, b: 0.048 0.048 a, c: 0.051 0.051 b, a: 0.048 0.048 b, b: 1 1 b, c: -0.117 -0.117 c, a: 0.051 0.051 c, b: -0.117 -0.117 c, c: 1 1 a b c a b c Correlation 0.302 0.302 -2.271 -2.271 0.21 0.21 -0.674 -0.674 -0.388 -0.388 -1.967 -1.967 0.801 0.801 -2.074 -2.074 0.57 0.57 0.164 0.164 -0.939 -0.939 -1.956 -1.956 0.864 0.864 -1.204 -1.204 0.152 0.152 0.238 0.238 -1.99 -1.99 1.128 1.128 -1.676 -1.676 1.75 1.75 0.907 0.907 -0.406 -0.406 1.146 1.146 0.706 0.706 -2.005 -2.005 0.42 0.42 -0.78 -0.78 -0.885 -0.885 0.386 0.386 1.542 1.542 0.526 0.526 $9\times10^{-4}$ 9×10−4 1.113 1.113 -0.142 -0.142 0.83 0.83 1.226 1.226 -0.987 -0.987 1.79 1.79 -2.247 -2.247 -0.425 -0.425 0.304 0.304 0.834 0.834 0.144 0.144 -0.664 -0.664 -0.404 -0.404 0.091 0.091 0.751 0.751 1.335 1.335 0.67 0.67 -0.005 -0.005 -0.819 -0.819 -1.183 -1.183 -1.224 -1.224 -1.306 -1.306 0.993 0.993 -0.278 -0.278 1.171 1.171 0.469 0.469 1.072 1.072 -1.095 -1.095 0.521 0.521 1.397 1.397 -0.292 -0.292 1.682 1.682 -0.281 -0.281 1.3 1.3 -0.484 -0.484 1.198 1.198 0.819 0.819 -0.644 -0.644 -0.528 -0.528 -0.404 -0.404 0.44 0.44 -1.584 -1.584 -0.873 -0.873 -0.55 -0.55 1.347 1.347 -0.657 -0.657 -0.588 -0.588 -2.034 -2.034 0.136 0.136 0.091 0.091 0.565 0.565 -0.569 -0.569 -0.532 -0.532 0.649 0.649 -0.159 -0.159 0.838 0.838 0.081 0.081 0.532 0.532 -1.335 -1.335 -0.046 -0.046 -1.818 -1.818 -0.219 -0.219 2.756 2.756 0.385 0.385 0.101 0.101 1.32 1.32 -0.146 -0.146 0.809 0.809 a 0 2 4 6 8 -2 0 2 4 x=0, y=0 x=1.8, y=0.063 x=1.2, y=0.126 x=3.5, y=0.188 x=3, y=0.249 x=4.8, y=0.31 x=-1.965, y=3 x=-1.354, y=3 x=-0.743, y=3 x=-0.131, y=8 x=0.48, y=7 x=1.091, y=6 b 0 2 4 6 8 10 0 10 20 30 40 x=-3.073, y=1 x=-2.189, y=1 x=-1.304, y=7 x=-0.42, y=2 x=0.465, y=11 x=1.349, y=8 c

from plotting

function summarize(m: model<"qr">)
    return "qr: q is {rows(m.q)}x{cols(m.q)}, r is {rows(m.r)}x{cols(m.r)}"
end function

function summarize(m: model<"svd">)
    return "svd: singular values = {m.s}"
end function

function summarize(m: model)
    return "generic model, kind unhandled"
end function

A = [4, 3; 6, 3]
qres = qr(A)
sres = svd(A)
pk = findpeaks([0,1,3,1,0,2,4,2,0])

print(summarize(qres))
print(summarize(sres))
print(summarize(pk))

from tour

Fs = 2000
fc = 60
lp = butter(4, "low", fc, Fs)
print("Butterworth order 4, cutoff {fc} Hz @ Fs={Fs} Hz -- sos shape: {rows(lp.sos)}x{cols(lp.sos)}")

N = 1000
t = (0 to N - 1) / Fs
low_tone = sin(2*pi*20*t)
high_tone = sin(2*pi*400*t)
mix = low_tone + high_tone

causal = sosfilt(lp, mix)
zerophase = filtfilt(lp, mix)

err_low_causal = rms(causal[100:N-1] - low_tone[100:N-1])
err_low_zp = rms(zerophase[100:N-1] - low_tone[100:N-1])
print("20 Hz tone RMS recovery error: causal={err_low_causal:.4f}, zero-phase={err_low_zp:.4f}")
print("High tone (400 Hz) amplitude in raw mix: {rms(high_tone):.4f}")
print("High tone leakage after zero-phase LP: {rms(zerophase - low_tone):.4f}")

from tour

G = vstack(randn(40, 2, seed = 31) + 4,
           randn(40, 2, seed = 32) - 4,
           randn(40, 2, seed = 33))
d = dbscan(G, 1.5, 4)
print("dbscan labels: {distinct(d)}")

proj  = pca(G, 2)                    # the (n, 2) projected coordinates

comps = pca_components(G, 2)         # the (2, 2) loading matrix

ev    = pca_explained_variance(G, 2)
print("pca projected shape: {rows(proj)} x {cols(proj)}")
print("pca components:\n{round(comps, 3)}")
print("explained variance: {round(ev, 3)}")

small = vstack(randn(6, 2, seed = 41) + 3, randn(6, 2, seed = 42) - 3)
low = tsne(small, n_components = 2, perplexity = 3, seed = 1, max_iter = 100)
print("tsne output rows: {rows(low)}")
output
dbscan labels: (0, 1, 2)
pca projected shape: 120 x 2
pca components:
[0.694, 0.72; 0.72, -0.694]
explained variance: [0.969, 0.031]
tsne output rows: 12

from statistics-ml

See also

rows — documented in the same entry.