@@ -470,7 +470,20 @@ public static Tensor shape_tensor(int[] shape)
470
470
return ops . convert_to_tensor ( shape , dtype : TF_DataType . TF_INT32 , name : "shape" ) ;
471
471
}
472
472
473
- public static string to_numpy_string ( Tensor tensor )
473
+ public static string to_numpy_string ( Tensor array )
474
+ {
475
+ Shape shape = array . shape ;
476
+ if ( shape . ndim == 0 )
477
+ return array [ 0 ] . ToString ( ) ;
478
+
479
+ var s = new StringBuilder ( ) ;
480
+ s . Append ( "array(" ) ;
481
+ PrettyPrint ( s , array ) ;
482
+ s . Append ( ")" ) ;
483
+ return s . ToString ( ) ;
484
+ }
485
+
486
+ static string Render ( Tensor tensor )
474
487
{
475
488
if ( tensor . buffer == IntPtr . Zero )
476
489
return "Empty" ;
@@ -487,7 +500,7 @@ public static string to_numpy_string(Tensor tensor)
487
500
else
488
501
return $ "['{ string . Join ( "', '" , tensor . StringData ( ) . Take ( 25 ) ) } ']";
489
502
}
490
- else if ( dtype == TF_DataType . TF_VARIANT )
503
+ else if ( dtype == TF_DataType . TF_VARIANT )
491
504
{
492
505
return "<unprintable>" ;
493
506
}
@@ -515,7 +528,7 @@ public static string to_numpy_string(Tensor tensor)
515
528
var array = tensor . ToArray < float > ( ) ;
516
529
return DisplayArrayAsString ( array , tensor . shape ) ;
517
530
}
518
- else if ( dtype == TF_DataType . TF_DOUBLE )
531
+ else if ( dtype == TF_DataType . TF_DOUBLE )
519
532
{
520
533
var array = tensor . ToArray < double > ( ) ;
521
534
return DisplayArrayAsString ( array , tensor . shape ) ;
@@ -532,14 +545,72 @@ static string DisplayArrayAsString<T>(T[] array, Shape shape)
532
545
if ( shape . ndim == 0 )
533
546
return array [ 0 ] . ToString ( ) ;
534
547
535
- var display = "array([ " ;
548
+ var display = "" ;
536
549
if ( array . Length < 10 )
537
550
display += string . Join ( ", " , array ) ;
538
551
else
539
- display += string . Join ( ", " , array . Take ( 3 ) ) + " ... " + string . Join ( ", " , array . Skip ( array . Length - 3 ) ) ;
540
- return display + "])" ;
552
+ display += string . Join ( ", " , array . Take ( 3 ) ) + ", ..., " + string . Join ( ", " , array . Skip ( array . Length - 3 ) ) ;
553
+ return display ;
554
+ }
555
+
556
+ static void PrettyPrint ( StringBuilder s , Tensor array , bool flat = false )
557
+ {
558
+ var shape = array . shape ;
559
+
560
+ if ( shape . Length == 1 )
561
+ {
562
+ s . Append ( "[" ) ;
563
+ s . Append ( Render ( array ) ) ;
564
+ s . Append ( "]" ) ;
565
+ return ;
566
+ }
567
+
568
+ var len = shape [ 0 ] ;
569
+ s . Append ( "[" ) ;
570
+
571
+ if ( len <= 10 )
572
+ {
573
+ for ( int i = 0 ; i < len ; i ++ )
574
+ {
575
+ PrettyPrint ( s , array [ i ] , flat ) ;
576
+ if ( i < len - 1 )
577
+ {
578
+ s . Append ( ", " ) ;
579
+ if ( ! flat )
580
+ s . AppendLine ( ) ;
581
+ }
582
+ }
583
+ }
584
+ else
585
+ {
586
+ for ( int i = 0 ; i < 5 ; i ++ )
587
+ {
588
+ PrettyPrint ( s , array [ i ] , flat ) ;
589
+ if ( i < len - 1 )
590
+ {
591
+ s . Append ( ", " ) ;
592
+ if ( ! flat )
593
+ s . AppendLine ( ) ;
594
+ }
595
+ }
596
+
597
+ s . Append ( " ... " ) ;
598
+ s . AppendLine ( ) ;
599
+
600
+ for ( int i = ( int ) array . size - 5 ; i < len ; i ++ )
601
+ {
602
+ PrettyPrint ( s , array [ i ] , flat ) ;
603
+ if ( i < len - 1 )
604
+ {
605
+ s . Append ( ", " ) ;
606
+ if ( ! flat )
607
+ s . AppendLine ( ) ;
608
+ }
609
+ }
610
+ }
611
+
612
+ s . Append ( "]" ) ;
541
613
}
542
-
543
614
544
615
public static ParsedSliceArgs ParseSlices ( Slice [ ] slices )
545
616
{
0 commit comments