Display Short Form of Large Matrix
$begingroup$
Is there a way to display matrices in a shorter form similar to Short
or Shallow
?
I find that I very often want to inspect the initial and final rows and columns of matrices just to make sure I didn't do something completely silly when generating it. For matrices larger than the truncation size (say Partition[Range[10^6], 1000]
, Mathematica outputs (...1...)
in a box with the options "show less", "show more", "show all", and "set size limit...".
I don't know if "show more" is supposed to do something similar to what I want, but clicking it doesn't do anything. I also don't really want to see the entire matrix. I'd like functionality similar to what Short
does for 1D lists (i.e. Range[10^6]//Short
produces something like:
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,<<999966>>,999984,999985,999986,999987,999988,999989,999990,999991,999992,999993,999994,999995,999996,999997,999998,999999,1000000}
Ideally, I'd like something nearly as easy to read as the TableForm or MatrixForm of the full matrix, just with fewer lines. I realize I could do something like:
matrix[[Flatten[{Range[10], Range[-10, -1]}], Flatten[{Range[10], Range[-10, -1]}]]]
each time, but that seems tedious.
I haven't seen anything come up in my Google and MMA.SE searches, so perhaps this isn't a problem other people worry about. I've created my own code to deal with this in a way that's pleasing to my eye, so I'll post the code as an answer in case it helps anyone else. However, if anyone else has a better or more robust way please post an answer and I'll be glad to accept it!
matrix display
$endgroup$
add a comment |
$begingroup$
Is there a way to display matrices in a shorter form similar to Short
or Shallow
?
I find that I very often want to inspect the initial and final rows and columns of matrices just to make sure I didn't do something completely silly when generating it. For matrices larger than the truncation size (say Partition[Range[10^6], 1000]
, Mathematica outputs (...1...)
in a box with the options "show less", "show more", "show all", and "set size limit...".
I don't know if "show more" is supposed to do something similar to what I want, but clicking it doesn't do anything. I also don't really want to see the entire matrix. I'd like functionality similar to what Short
does for 1D lists (i.e. Range[10^6]//Short
produces something like:
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,<<999966>>,999984,999985,999986,999987,999988,999989,999990,999991,999992,999993,999994,999995,999996,999997,999998,999999,1000000}
Ideally, I'd like something nearly as easy to read as the TableForm or MatrixForm of the full matrix, just with fewer lines. I realize I could do something like:
matrix[[Flatten[{Range[10], Range[-10, -1]}], Flatten[{Range[10], Range[-10, -1]}]]]
each time, but that seems tedious.
I haven't seen anything come up in my Google and MMA.SE searches, so perhaps this isn't a problem other people worry about. I've created my own code to deal with this in a way that's pleasing to my eye, so I'll post the code as an answer in case it helps anyone else. However, if anyone else has a better or more robust way please post an answer and I'll be glad to accept it!
matrix display
$endgroup$
add a comment |
$begingroup$
Is there a way to display matrices in a shorter form similar to Short
or Shallow
?
I find that I very often want to inspect the initial and final rows and columns of matrices just to make sure I didn't do something completely silly when generating it. For matrices larger than the truncation size (say Partition[Range[10^6], 1000]
, Mathematica outputs (...1...)
in a box with the options "show less", "show more", "show all", and "set size limit...".
I don't know if "show more" is supposed to do something similar to what I want, but clicking it doesn't do anything. I also don't really want to see the entire matrix. I'd like functionality similar to what Short
does for 1D lists (i.e. Range[10^6]//Short
produces something like:
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,<<999966>>,999984,999985,999986,999987,999988,999989,999990,999991,999992,999993,999994,999995,999996,999997,999998,999999,1000000}
Ideally, I'd like something nearly as easy to read as the TableForm or MatrixForm of the full matrix, just with fewer lines. I realize I could do something like:
matrix[[Flatten[{Range[10], Range[-10, -1]}], Flatten[{Range[10], Range[-10, -1]}]]]
each time, but that seems tedious.
I haven't seen anything come up in my Google and MMA.SE searches, so perhaps this isn't a problem other people worry about. I've created my own code to deal with this in a way that's pleasing to my eye, so I'll post the code as an answer in case it helps anyone else. However, if anyone else has a better or more robust way please post an answer and I'll be glad to accept it!
matrix display
$endgroup$
Is there a way to display matrices in a shorter form similar to Short
or Shallow
?
I find that I very often want to inspect the initial and final rows and columns of matrices just to make sure I didn't do something completely silly when generating it. For matrices larger than the truncation size (say Partition[Range[10^6], 1000]
, Mathematica outputs (...1...)
in a box with the options "show less", "show more", "show all", and "set size limit...".
I don't know if "show more" is supposed to do something similar to what I want, but clicking it doesn't do anything. I also don't really want to see the entire matrix. I'd like functionality similar to what Short
does for 1D lists (i.e. Range[10^6]//Short
produces something like:
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,<<999966>>,999984,999985,999986,999987,999988,999989,999990,999991,999992,999993,999994,999995,999996,999997,999998,999999,1000000}
Ideally, I'd like something nearly as easy to read as the TableForm or MatrixForm of the full matrix, just with fewer lines. I realize I could do something like:
matrix[[Flatten[{Range[10], Range[-10, -1]}], Flatten[{Range[10], Range[-10, -1]}]]]
each time, but that seems tedious.
I haven't seen anything come up in my Google and MMA.SE searches, so perhaps this isn't a problem other people worry about. I've created my own code to deal with this in a way that's pleasing to my eye, so I'll post the code as an answer in case it helps anyone else. However, if anyone else has a better or more robust way please post an answer and I'll be glad to accept it!
matrix display
matrix display
edited 1 hour ago
MassDefect
asked 1 hour ago
MassDefectMassDefect
80628
80628
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
$begingroup$
Here is my answer:
myshallow[mat_List, dims_: {20, 20}] :=
Module[{matrix, rows, cols, matrows, matcols, splitrow, splitcol},
If[! And @@ IntegerQ /@ dims,
Return[HoldForm[myshallow[mat, dims]]]];
If[Length[Dimensions[mat]] == 1, matrix = {mat}, matrix = mat];
Switch[
Length[dims],
0,
rows = dims; cols = 20,
1,
cols = dims[[1]]; rows = 20,
2,
{rows, cols} = dims
];
{matrows, matcols} = Dimensions[matrix][[;; 2]];
{splitrow, splitcol} = {Ceiling[rows/2], Ceiling[cols/2]};
Which[
matrows <= rows [And] matcols <= cols,
Grid[
matrix,
Alignment -> {Center, Center}],
matrows <= rows [And] matcols > cols,
Grid[
Table[
Which[
row == 1 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row > 1 [And] col == splitcol + 1,
SpanFromAbove,
col <= splitcol,
matrix[[row, col]],
col >= splitcol + 2,
matrix[[row, col - (cols + 2)]]],
{row, matrows}, {col, cols + 1}],
Alignment -> {Center, Center}],
matrows > rows [And] matcols <= cols,
Grid[
Table[
Which[
row == splitrow + 1 [And] col == 1,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col > 1,
SpanFromLeft,
row <= splitrow,
matrix[[row, col]],
row >= splitrow + 2,
matrix[[row - (rows + 2), col]]],
{row, rows + 1}, {col, matcols}],
Alignment -> {Center, Center}],
matrows > rows [And] matcols > cols,
Grid[
Table[
Which[
row <= splitrow [And] col <= splitcol,
matrix[[row, col]],
row == 1 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row <= splitrow [And] col == splitcol + 1,
SpanFromAbove,
row <= splitrow [And] col >= splitcol + 2,
matrix[[row, col - (cols + 2)]],
row == splitrow + 1 [And] col == 1,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col <= splitcol,
SpanFromLeft,
row == splitrow + 1 [And] col == splitcol + 1,
"",
row == splitrow + 1 [And] col == splitcol + 2,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col > splitcol + 2,
SpanFromLeft,
row >= splitrow + 2 [And] col <= splitcol,
matrix[[row - (rows + 2), col]],
row == splitrow + 2 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row > splitrow + 2 [And] col == splitcol + 1,
SpanFromAbove,
row >= splitrow + 2 [And] col >= splitcol + 2,
matrix[[row - (rows + 2), col - (cols + 2)]]],
{row, rows + 1}, {col, cols + 1}],
Alignment -> {Center, Center}]
]
]
Essentially, I take any 1D or higher list followed by an optional number of dimensions. Based on other Mathematica functions, if you input 5
for the dimensions it specifies the number of rows and {5}
specifies 5 columns. My plan is to place it in $UserBaseDirectory/Kernel/init.m
to make it available for every session.
With the following test cases:
matrixhuge = Partition[Range[5*10^6], 1000];
matrixsmall = Partition[Range[25], 5];
matrixwide = Partition[Range[1000], 100];
matrixlong = Partition[Range[1000], 2];
matrixhuge // myshallow
matrixsmall // myshallow
matrixwide // myshallow
matrixlong // myshallow
I get the following:
$endgroup$
add a comment |
$begingroup$
Short/@Partition[Range[10^6], 1000]
Shallow/@Partition[Range[10^6], 1000]
$endgroup$
$begingroup$
Thanks! This definitely gets close to what I want, but I don't find it to be super readable (though certainly not difficult either). It's probably a lot less likely to break than a custom-built function, but I'm hoping to keep something along the lines ofMatrixForm
orTableForm
but shorter.
$endgroup$
– MassDefect
1 hour ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f189730%2fdisplay-short-form-of-large-matrix%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Here is my answer:
myshallow[mat_List, dims_: {20, 20}] :=
Module[{matrix, rows, cols, matrows, matcols, splitrow, splitcol},
If[! And @@ IntegerQ /@ dims,
Return[HoldForm[myshallow[mat, dims]]]];
If[Length[Dimensions[mat]] == 1, matrix = {mat}, matrix = mat];
Switch[
Length[dims],
0,
rows = dims; cols = 20,
1,
cols = dims[[1]]; rows = 20,
2,
{rows, cols} = dims
];
{matrows, matcols} = Dimensions[matrix][[;; 2]];
{splitrow, splitcol} = {Ceiling[rows/2], Ceiling[cols/2]};
Which[
matrows <= rows [And] matcols <= cols,
Grid[
matrix,
Alignment -> {Center, Center}],
matrows <= rows [And] matcols > cols,
Grid[
Table[
Which[
row == 1 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row > 1 [And] col == splitcol + 1,
SpanFromAbove,
col <= splitcol,
matrix[[row, col]],
col >= splitcol + 2,
matrix[[row, col - (cols + 2)]]],
{row, matrows}, {col, cols + 1}],
Alignment -> {Center, Center}],
matrows > rows [And] matcols <= cols,
Grid[
Table[
Which[
row == splitrow + 1 [And] col == 1,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col > 1,
SpanFromLeft,
row <= splitrow,
matrix[[row, col]],
row >= splitrow + 2,
matrix[[row - (rows + 2), col]]],
{row, rows + 1}, {col, matcols}],
Alignment -> {Center, Center}],
matrows > rows [And] matcols > cols,
Grid[
Table[
Which[
row <= splitrow [And] col <= splitcol,
matrix[[row, col]],
row == 1 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row <= splitrow [And] col == splitcol + 1,
SpanFromAbove,
row <= splitrow [And] col >= splitcol + 2,
matrix[[row, col - (cols + 2)]],
row == splitrow + 1 [And] col == 1,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col <= splitcol,
SpanFromLeft,
row == splitrow + 1 [And] col == splitcol + 1,
"",
row == splitrow + 1 [And] col == splitcol + 2,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col > splitcol + 2,
SpanFromLeft,
row >= splitrow + 2 [And] col <= splitcol,
matrix[[row - (rows + 2), col]],
row == splitrow + 2 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row > splitrow + 2 [And] col == splitcol + 1,
SpanFromAbove,
row >= splitrow + 2 [And] col >= splitcol + 2,
matrix[[row - (rows + 2), col - (cols + 2)]]],
{row, rows + 1}, {col, cols + 1}],
Alignment -> {Center, Center}]
]
]
Essentially, I take any 1D or higher list followed by an optional number of dimensions. Based on other Mathematica functions, if you input 5
for the dimensions it specifies the number of rows and {5}
specifies 5 columns. My plan is to place it in $UserBaseDirectory/Kernel/init.m
to make it available for every session.
With the following test cases:
matrixhuge = Partition[Range[5*10^6], 1000];
matrixsmall = Partition[Range[25], 5];
matrixwide = Partition[Range[1000], 100];
matrixlong = Partition[Range[1000], 2];
matrixhuge // myshallow
matrixsmall // myshallow
matrixwide // myshallow
matrixlong // myshallow
I get the following:
$endgroup$
add a comment |
$begingroup$
Here is my answer:
myshallow[mat_List, dims_: {20, 20}] :=
Module[{matrix, rows, cols, matrows, matcols, splitrow, splitcol},
If[! And @@ IntegerQ /@ dims,
Return[HoldForm[myshallow[mat, dims]]]];
If[Length[Dimensions[mat]] == 1, matrix = {mat}, matrix = mat];
Switch[
Length[dims],
0,
rows = dims; cols = 20,
1,
cols = dims[[1]]; rows = 20,
2,
{rows, cols} = dims
];
{matrows, matcols} = Dimensions[matrix][[;; 2]];
{splitrow, splitcol} = {Ceiling[rows/2], Ceiling[cols/2]};
Which[
matrows <= rows [And] matcols <= cols,
Grid[
matrix,
Alignment -> {Center, Center}],
matrows <= rows [And] matcols > cols,
Grid[
Table[
Which[
row == 1 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row > 1 [And] col == splitcol + 1,
SpanFromAbove,
col <= splitcol,
matrix[[row, col]],
col >= splitcol + 2,
matrix[[row, col - (cols + 2)]]],
{row, matrows}, {col, cols + 1}],
Alignment -> {Center, Center}],
matrows > rows [And] matcols <= cols,
Grid[
Table[
Which[
row == splitrow + 1 [And] col == 1,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col > 1,
SpanFromLeft,
row <= splitrow,
matrix[[row, col]],
row >= splitrow + 2,
matrix[[row - (rows + 2), col]]],
{row, rows + 1}, {col, matcols}],
Alignment -> {Center, Center}],
matrows > rows [And] matcols > cols,
Grid[
Table[
Which[
row <= splitrow [And] col <= splitcol,
matrix[[row, col]],
row == 1 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row <= splitrow [And] col == splitcol + 1,
SpanFromAbove,
row <= splitrow [And] col >= splitcol + 2,
matrix[[row, col - (cols + 2)]],
row == splitrow + 1 [And] col == 1,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col <= splitcol,
SpanFromLeft,
row == splitrow + 1 [And] col == splitcol + 1,
"",
row == splitrow + 1 [And] col == splitcol + 2,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col > splitcol + 2,
SpanFromLeft,
row >= splitrow + 2 [And] col <= splitcol,
matrix[[row - (rows + 2), col]],
row == splitrow + 2 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row > splitrow + 2 [And] col == splitcol + 1,
SpanFromAbove,
row >= splitrow + 2 [And] col >= splitcol + 2,
matrix[[row - (rows + 2), col - (cols + 2)]]],
{row, rows + 1}, {col, cols + 1}],
Alignment -> {Center, Center}]
]
]
Essentially, I take any 1D or higher list followed by an optional number of dimensions. Based on other Mathematica functions, if you input 5
for the dimensions it specifies the number of rows and {5}
specifies 5 columns. My plan is to place it in $UserBaseDirectory/Kernel/init.m
to make it available for every session.
With the following test cases:
matrixhuge = Partition[Range[5*10^6], 1000];
matrixsmall = Partition[Range[25], 5];
matrixwide = Partition[Range[1000], 100];
matrixlong = Partition[Range[1000], 2];
matrixhuge // myshallow
matrixsmall // myshallow
matrixwide // myshallow
matrixlong // myshallow
I get the following:
$endgroup$
add a comment |
$begingroup$
Here is my answer:
myshallow[mat_List, dims_: {20, 20}] :=
Module[{matrix, rows, cols, matrows, matcols, splitrow, splitcol},
If[! And @@ IntegerQ /@ dims,
Return[HoldForm[myshallow[mat, dims]]]];
If[Length[Dimensions[mat]] == 1, matrix = {mat}, matrix = mat];
Switch[
Length[dims],
0,
rows = dims; cols = 20,
1,
cols = dims[[1]]; rows = 20,
2,
{rows, cols} = dims
];
{matrows, matcols} = Dimensions[matrix][[;; 2]];
{splitrow, splitcol} = {Ceiling[rows/2], Ceiling[cols/2]};
Which[
matrows <= rows [And] matcols <= cols,
Grid[
matrix,
Alignment -> {Center, Center}],
matrows <= rows [And] matcols > cols,
Grid[
Table[
Which[
row == 1 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row > 1 [And] col == splitcol + 1,
SpanFromAbove,
col <= splitcol,
matrix[[row, col]],
col >= splitcol + 2,
matrix[[row, col - (cols + 2)]]],
{row, matrows}, {col, cols + 1}],
Alignment -> {Center, Center}],
matrows > rows [And] matcols <= cols,
Grid[
Table[
Which[
row == splitrow + 1 [And] col == 1,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col > 1,
SpanFromLeft,
row <= splitrow,
matrix[[row, col]],
row >= splitrow + 2,
matrix[[row - (rows + 2), col]]],
{row, rows + 1}, {col, matcols}],
Alignment -> {Center, Center}],
matrows > rows [And] matcols > cols,
Grid[
Table[
Which[
row <= splitrow [And] col <= splitcol,
matrix[[row, col]],
row == 1 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row <= splitrow [And] col == splitcol + 1,
SpanFromAbove,
row <= splitrow [And] col >= splitcol + 2,
matrix[[row, col - (cols + 2)]],
row == splitrow + 1 [And] col == 1,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col <= splitcol,
SpanFromLeft,
row == splitrow + 1 [And] col == splitcol + 1,
"",
row == splitrow + 1 [And] col == splitcol + 2,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col > splitcol + 2,
SpanFromLeft,
row >= splitrow + 2 [And] col <= splitcol,
matrix[[row - (rows + 2), col]],
row == splitrow + 2 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row > splitrow + 2 [And] col == splitcol + 1,
SpanFromAbove,
row >= splitrow + 2 [And] col >= splitcol + 2,
matrix[[row - (rows + 2), col - (cols + 2)]]],
{row, rows + 1}, {col, cols + 1}],
Alignment -> {Center, Center}]
]
]
Essentially, I take any 1D or higher list followed by an optional number of dimensions. Based on other Mathematica functions, if you input 5
for the dimensions it specifies the number of rows and {5}
specifies 5 columns. My plan is to place it in $UserBaseDirectory/Kernel/init.m
to make it available for every session.
With the following test cases:
matrixhuge = Partition[Range[5*10^6], 1000];
matrixsmall = Partition[Range[25], 5];
matrixwide = Partition[Range[1000], 100];
matrixlong = Partition[Range[1000], 2];
matrixhuge // myshallow
matrixsmall // myshallow
matrixwide // myshallow
matrixlong // myshallow
I get the following:
$endgroup$
Here is my answer:
myshallow[mat_List, dims_: {20, 20}] :=
Module[{matrix, rows, cols, matrows, matcols, splitrow, splitcol},
If[! And @@ IntegerQ /@ dims,
Return[HoldForm[myshallow[mat, dims]]]];
If[Length[Dimensions[mat]] == 1, matrix = {mat}, matrix = mat];
Switch[
Length[dims],
0,
rows = dims; cols = 20,
1,
cols = dims[[1]]; rows = 20,
2,
{rows, cols} = dims
];
{matrows, matcols} = Dimensions[matrix][[;; 2]];
{splitrow, splitcol} = {Ceiling[rows/2], Ceiling[cols/2]};
Which[
matrows <= rows [And] matcols <= cols,
Grid[
matrix,
Alignment -> {Center, Center}],
matrows <= rows [And] matcols > cols,
Grid[
Table[
Which[
row == 1 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row > 1 [And] col == splitcol + 1,
SpanFromAbove,
col <= splitcol,
matrix[[row, col]],
col >= splitcol + 2,
matrix[[row, col - (cols + 2)]]],
{row, matrows}, {col, cols + 1}],
Alignment -> {Center, Center}],
matrows > rows [And] matcols <= cols,
Grid[
Table[
Which[
row == splitrow + 1 [And] col == 1,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col > 1,
SpanFromLeft,
row <= splitrow,
matrix[[row, col]],
row >= splitrow + 2,
matrix[[row - (rows + 2), col]]],
{row, rows + 1}, {col, matcols}],
Alignment -> {Center, Center}],
matrows > rows [And] matcols > cols,
Grid[
Table[
Which[
row <= splitrow [And] col <= splitcol,
matrix[[row, col]],
row == 1 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row <= splitrow [And] col == splitcol + 1,
SpanFromAbove,
row <= splitrow [And] col >= splitcol + 2,
matrix[[row, col - (cols + 2)]],
row == splitrow + 1 [And] col == 1,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col <= splitcol,
SpanFromLeft,
row == splitrow + 1 [And] col == splitcol + 1,
"",
row == splitrow + 1 [And] col == splitcol + 2,
Skeleton[matrows - rows],
row == splitrow + 1 [And] col > splitcol + 2,
SpanFromLeft,
row >= splitrow + 2 [And] col <= splitcol,
matrix[[row - (rows + 2), col]],
row == splitrow + 2 [And] col == splitcol + 1,
Skeleton[matcols - cols],
row > splitrow + 2 [And] col == splitcol + 1,
SpanFromAbove,
row >= splitrow + 2 [And] col >= splitcol + 2,
matrix[[row - (rows + 2), col - (cols + 2)]]],
{row, rows + 1}, {col, cols + 1}],
Alignment -> {Center, Center}]
]
]
Essentially, I take any 1D or higher list followed by an optional number of dimensions. Based on other Mathematica functions, if you input 5
for the dimensions it specifies the number of rows and {5}
specifies 5 columns. My plan is to place it in $UserBaseDirectory/Kernel/init.m
to make it available for every session.
With the following test cases:
matrixhuge = Partition[Range[5*10^6], 1000];
matrixsmall = Partition[Range[25], 5];
matrixwide = Partition[Range[1000], 100];
matrixlong = Partition[Range[1000], 2];
matrixhuge // myshallow
matrixsmall // myshallow
matrixwide // myshallow
matrixlong // myshallow
I get the following:
edited 1 hour ago
answered 1 hour ago
MassDefectMassDefect
80628
80628
add a comment |
add a comment |
$begingroup$
Short/@Partition[Range[10^6], 1000]
Shallow/@Partition[Range[10^6], 1000]
$endgroup$
$begingroup$
Thanks! This definitely gets close to what I want, but I don't find it to be super readable (though certainly not difficult either). It's probably a lot less likely to break than a custom-built function, but I'm hoping to keep something along the lines ofMatrixForm
orTableForm
but shorter.
$endgroup$
– MassDefect
1 hour ago
add a comment |
$begingroup$
Short/@Partition[Range[10^6], 1000]
Shallow/@Partition[Range[10^6], 1000]
$endgroup$
$begingroup$
Thanks! This definitely gets close to what I want, but I don't find it to be super readable (though certainly not difficult either). It's probably a lot less likely to break than a custom-built function, but I'm hoping to keep something along the lines ofMatrixForm
orTableForm
but shorter.
$endgroup$
– MassDefect
1 hour ago
add a comment |
$begingroup$
Short/@Partition[Range[10^6], 1000]
Shallow/@Partition[Range[10^6], 1000]
$endgroup$
Short/@Partition[Range[10^6], 1000]
Shallow/@Partition[Range[10^6], 1000]
answered 1 hour ago
JerryJerry
959112
959112
$begingroup$
Thanks! This definitely gets close to what I want, but I don't find it to be super readable (though certainly not difficult either). It's probably a lot less likely to break than a custom-built function, but I'm hoping to keep something along the lines ofMatrixForm
orTableForm
but shorter.
$endgroup$
– MassDefect
1 hour ago
add a comment |
$begingroup$
Thanks! This definitely gets close to what I want, but I don't find it to be super readable (though certainly not difficult either). It's probably a lot less likely to break than a custom-built function, but I'm hoping to keep something along the lines ofMatrixForm
orTableForm
but shorter.
$endgroup$
– MassDefect
1 hour ago
$begingroup$
Thanks! This definitely gets close to what I want, but I don't find it to be super readable (though certainly not difficult either). It's probably a lot less likely to break than a custom-built function, but I'm hoping to keep something along the lines of
MatrixForm
or TableForm
but shorter.$endgroup$
– MassDefect
1 hour ago
$begingroup$
Thanks! This definitely gets close to what I want, but I don't find it to be super readable (though certainly not difficult either). It's probably a lot less likely to break than a custom-built function, but I'm hoping to keep something along the lines of
MatrixForm
or TableForm
but shorter.$endgroup$
– MassDefect
1 hour ago
add a comment |
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f189730%2fdisplay-short-form-of-large-matrix%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown