numo-narray 0.9.1.4 → 0.9.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -4
  3. data/ext/numo/narray/array.c +17 -7
  4. data/ext/numo/narray/data.c +39 -36
  5. data/ext/numo/narray/extconf.rb +1 -0
  6. data/ext/numo/narray/gen/narray_def.rb +4 -0
  7. data/ext/numo/narray/gen/spec.rb +5 -1
  8. data/ext/numo/narray/gen/tmpl/accum.c +2 -2
  9. data/ext/numo/narray/gen/tmpl/accum_arg.c +88 -0
  10. data/ext/numo/narray/gen/tmpl/accum_binary.c +1 -1
  11. data/ext/numo/narray/gen/tmpl/accum_index.c +25 -14
  12. data/ext/numo/narray/gen/tmpl/aref.c +5 -35
  13. data/ext/numo/narray/gen/tmpl/aset.c +7 -37
  14. data/ext/numo/narray/gen/tmpl/bincount.c +7 -7
  15. data/ext/numo/narray/gen/tmpl/clip.c +11 -15
  16. data/ext/numo/narray/gen/tmpl/cum.c +1 -1
  17. data/ext/numo/narray/gen/tmpl/each.c +4 -2
  18. data/ext/numo/narray/gen/tmpl/each_with_index.c +5 -2
  19. data/ext/numo/narray/gen/tmpl/lib.c +2 -2
  20. data/ext/numo/narray/gen/tmpl/logseq.c +6 -5
  21. data/ext/numo/narray/gen/tmpl/map_with_index.c +5 -6
  22. data/ext/numo/narray/gen/tmpl/median.c +2 -2
  23. data/ext/numo/narray/gen/tmpl/minmax.c +1 -1
  24. data/ext/numo/narray/gen/tmpl/poly.c +4 -4
  25. data/ext/numo/narray/gen/tmpl/qsort.c +1 -1
  26. data/ext/numo/narray/gen/tmpl/rand.c +8 -6
  27. data/ext/numo/narray/gen/tmpl/rand_norm.c +18 -16
  28. data/ext/numo/narray/gen/tmpl/seq.c +5 -4
  29. data/ext/numo/narray/gen/tmpl/sort.c +3 -3
  30. data/ext/numo/narray/gen/tmpl/sort_index.c +2 -2
  31. data/ext/numo/narray/gen/tmpl/store_array.c +14 -2
  32. data/ext/numo/narray/gen/tmpl/unary_s.c +55 -31
  33. data/ext/numo/narray/gen/tmpl_bit/aref.c +22 -30
  34. data/ext/numo/narray/gen/tmpl_bit/aset.c +20 -34
  35. data/ext/numo/narray/gen/tmpl_bit/binary.c +42 -14
  36. data/ext/numo/narray/gen/tmpl_bit/bit_count.c +5 -0
  37. data/ext/numo/narray/gen/tmpl_bit/bit_reduce.c +5 -0
  38. data/ext/numo/narray/gen/tmpl_bit/store_array.c +14 -2
  39. data/ext/numo/narray/gen/tmpl_bit/store_bit.c +21 -7
  40. data/ext/numo/narray/gen/tmpl_bit/unary.c +21 -7
  41. data/ext/numo/narray/index.c +369 -59
  42. data/ext/numo/narray/math.c +2 -2
  43. data/ext/numo/narray/narray.c +45 -27
  44. data/ext/numo/narray/ndloop.c +2 -2
  45. data/ext/numo/narray/numo/intern.h +3 -2
  46. data/ext/numo/narray/numo/narray.h +24 -5
  47. data/ext/numo/narray/numo/ndloop.h +2 -2
  48. data/ext/numo/narray/numo/template.h +4 -6
  49. data/ext/numo/narray/numo/types/complex.h +2 -2
  50. data/ext/numo/narray/step.c +58 -252
  51. data/ext/numo/narray/struct.c +2 -2
  52. data/lib/numo/narray/extra.rb +172 -212
  53. data/numo-narray.gemspec +9 -5
  54. metadata +18 -17
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  strut.c
3
- Numerical Array Extension for Ruby
4
- (C) Copyright 1999-2017 by Masahiro TANAKA
3
+ Ruby/Numo::NArray - Numerical Array class for Ruby
4
+ Copyright (C) 1999-2019 Masahiro TANAKA
5
5
  */
6
6
  #include <ruby.h>
7
7
  #include "numo/narray.h"
@@ -43,75 +43,25 @@ module Numo
43
43
  reverse(0)
44
44
  end
45
45
 
46
- # Multi-dimensional array indexing.
47
- # Same as [] for one-dimensional NArray.
48
- # Similar to numpy's tuple indexing, i.e., `a[[1,2,..],[3,4,..]]`
49
- # (This method will be rewritten in C)
50
- # @return [Numo::NArray] one-dimensional view of self.
51
- # @example
52
- # p x = Numo::DFloat.new(3,3,3).seq
53
- # # Numo::DFloat#shape=[3,3,3]
54
- # # [[[0, 1, 2],
55
- # # [3, 4, 5],
56
- # # [6, 7, 8]],
57
- # # [[9, 10, 11],
58
- # # [12, 13, 14],
59
- # # [15, 16, 17]],
60
- # # [[18, 19, 20],
61
- # # [21, 22, 23],
62
- # # [24, 25, 26]]]
63
- #
64
- # p x.at([0,1,2],[0,1,2],[-1,-2,-3])
65
- # # Numo::DFloat(view)#shape=[3]
66
- # # [2, 13, 24]
67
- def at(*indices)
68
- if indices.size != ndim
69
- raise DimensionError, "argument length does not match dimension size"
70
- end
71
- idx = nil
72
- stride = 1
73
- (indices.size-1).downto(0) do |i|
74
- ix = Int64.cast(indices[i])
75
- if ix.ndim != 1
76
- raise DimensionError, "index array is not one-dimensional"
77
- end
78
- ix[ix < 0] += shape[i]
79
- if ((ix < 0) & (ix >= shape[i])).any?
80
- raise IndexError, "index array is out of range"
81
- end
82
- if idx
83
- if idx.size != ix.size
84
- raise ShapeError, "index array sizes mismatch"
85
- end
86
- idx += ix * stride
87
- stride *= shape[i]
88
- else
89
- idx = ix
90
- stride = shape[i]
91
- end
92
- end
93
- self[idx]
94
- end
95
-
96
46
  # Rotate in the plane specified by axes.
97
47
  # @example
98
- # p a = Numo::Int32.new(2,2).seq
99
- # # Numo::Int32#shape=[2,2]
48
+ # a = Numo::Int32.new(2,2).seq
49
+ # # => Numo::Int32#shape=[2,2]
100
50
  # # [[0, 1],
101
51
  # # [2, 3]]
102
52
  #
103
- # p a.rot90
104
- # # Numo::Int32(view)#shape=[2,2]
53
+ # a.rot90
54
+ # # => Numo::Int32(view)#shape=[2,2]
105
55
  # # [[1, 3],
106
56
  # # [0, 2]]
107
57
  #
108
- # p a.rot90(2)
109
- # # Numo::Int32(view)#shape=[2,2]
58
+ # a.rot90(2)
59
+ # # => Numo::Int32(view)#shape=[2,2]
110
60
  # # [[3, 2],
111
61
  # # [1, 0]]
112
62
  #
113
- # p a.rot90(3)
114
- # # Numo::Int32(view)#shape=[2,2]
63
+ # a.rot90(3)
64
+ # # => Numo::Int32(view)#shape=[2,2]
115
65
  # # [[2, 0],
116
66
  # # [3, 1]]
117
67
  def rot90(k=1,axes=[0,1])
@@ -177,10 +127,10 @@ module Numo
177
127
  # 4 9 7
178
128
  # 2 -1 6
179
129
  # ]
180
- # => Numo::DFloat#shape=[3,3]
181
- # [[2, -3, 5],
182
- # [4, 9, 7],
183
- # [2, -1, 6]]
130
+ # # => Numo::DFloat#shape=[3,3]
131
+ # # [[2, -3, 5],
132
+ # # [4, 9, 7],
133
+ # # [2, -1, 6]]
184
134
 
185
135
  def self.parse(str, split1d:/\s+/, split2d:/;?$|;/,
186
136
  split3d:/\s*\n(\s*\n)+/m)
@@ -210,7 +160,7 @@ module Numo
210
160
 
211
161
 
212
162
  # Iterate over an axis
213
- # @ example
163
+ # @example
214
164
  # > a = Numo::DFloat.new(2,2,2).seq
215
165
  # > p a
216
166
  # Numo::DFloat#shape=[2,2,2]
@@ -260,19 +210,19 @@ module Numo
260
210
  # Append values to the end of an narray.
261
211
  # @example
262
212
  # a = Numo::DFloat[1, 2, 3]
263
- # p a.append([[4, 5, 6], [7, 8, 9]])
264
- # # Numo::DFloat#shape=[9]
213
+ # a.append([[4, 5, 6], [7, 8, 9]])
214
+ # # => Numo::DFloat#shape=[9]
265
215
  # # [1, 2, 3, 4, 5, 6, 7, 8, 9]
266
216
  #
267
217
  # a = Numo::DFloat[[1, 2, 3]]
268
- # p a.append([[4, 5, 6], [7, 8, 9]],axis:0)
269
- # # Numo::DFloat#shape=[3,3]
218
+ # a.append([[4, 5, 6], [7, 8, 9]],axis:0)
219
+ # # => Numo::DFloat#shape=[3,3]
270
220
  # # [[1, 2, 3],
271
221
  # # [4, 5, 6],
272
222
  # # [7, 8, 9]]
273
223
  #
274
224
  # a = Numo::DFloat[[1, 2, 3], [4, 5, 6]]
275
- # p a.append([7, 8, 9], axis:0)
225
+ # a.append([7, 8, 9], axis:0)
276
226
  # # in `append': dimension mismatch (Numo::NArray::DimensionError)
277
227
 
278
228
  def append(other,axis:nil)
@@ -295,19 +245,19 @@ module Numo
295
245
 
296
246
  # @example
297
247
  # a = Numo::DFloat[[1,2,3,4], [5,6,7,8], [9,10,11,12]]
298
- # p a.delete(1,0)
299
- # # Numo::DFloat(view)#shape=[2,4]
248
+ # a.delete(1,0)
249
+ # # => Numo::DFloat(view)#shape=[2,4]
300
250
  # # [[1, 2, 3, 4],
301
251
  # # [9, 10, 11, 12]]
302
252
  #
303
- # p a.delete((0..-1).step(2),1)
304
- # # Numo::DFloat(view)#shape=[3,2]
253
+ # a.delete((0..-1).step(2),1)
254
+ # # => Numo::DFloat(view)#shape=[3,2]
305
255
  # # [[2, 4],
306
256
  # # [6, 8],
307
257
  # # [10, 12]]
308
258
  #
309
- # p a.delete([1,3,5])
310
- # # Numo::DFloat(view)#shape=[9]
259
+ # a.delete([1,3,5])
260
+ # # => Numo::DFloat(view)#shape=[9]
311
261
  # # [1, 3, 5, 7, 8, 9, 10, 11, 12]
312
262
 
313
263
  def delete(indice,axis=nil)
@@ -326,72 +276,72 @@ module Numo
326
276
 
327
277
  # Insert values along the axis before the indices.
328
278
  # @example
329
- # p a = Numo::DFloat[[1, 2], [3, 4]]
279
+ # a = Numo::DFloat[[1, 2], [3, 4]]
330
280
  # a = Numo::Int32[[1, 1], [2, 2], [3, 3]]
331
281
  #
332
- # p a.insert(1,5)
333
- # # Numo::Int32#shape=[7]
282
+ # a.insert(1,5)
283
+ # # => Numo::Int32#shape=[7]
334
284
  # # [1, 5, 1, 2, 2, 3, 3]
335
285
  #
336
- # p a.insert(1, 5, axis:1)
337
- # # Numo::Int32#shape=[3,3]
286
+ # a.insert(1, 5, axis:1)
287
+ # # => Numo::Int32#shape=[3,3]
338
288
  # # [[1, 5, 1],
339
289
  # # [2, 5, 2],
340
290
  # # [3, 5, 3]]
341
291
  #
342
- # p a.insert([1], [[11],[12],[13]], axis:1)
343
- # # Numo::Int32#shape=[3,3]
292
+ # a.insert([1], [[11],[12],[13]], axis:1)
293
+ # # => Numo::Int32#shape=[3,3]
344
294
  # # [[1, 11, 1],
345
295
  # # [2, 12, 2],
346
296
  # # [3, 13, 3]]
347
297
  #
348
- # p a.insert(1, [11, 12, 13], axis:1)
349
- # # Numo::Int32#shape=[3,3]
298
+ # a.insert(1, [11, 12, 13], axis:1)
299
+ # # => Numo::Int32#shape=[3,3]
350
300
  # # [[1, 11, 1],
351
301
  # # [2, 12, 2],
352
302
  # # [3, 13, 3]]
353
303
  #
354
- # p a.insert([1], [11, 12, 13], axis:1)
355
- # # Numo::Int32#shape=[3,5]
304
+ # a.insert([1], [11, 12, 13], axis:1)
305
+ # # => Numo::Int32#shape=[3,5]
356
306
  # # [[1, 11, 12, 13, 1],
357
307
  # # [2, 11, 12, 13, 2],
358
308
  # # [3, 11, 12, 13, 3]]
359
309
  #
360
- # p b = a.flatten
361
- # # Numo::Int32(view)#shape=[6]
310
+ # b = a.flatten
311
+ # # => Numo::Int32(view)#shape=[6]
362
312
  # # [1, 1, 2, 2, 3, 3]
363
313
  #
364
- # p b.insert(2,[15,16])
365
- # # Numo::Int32#shape=[8]
314
+ # b.insert(2,[15,16])
315
+ # # => Numo::Int32#shape=[8]
366
316
  # # [1, 1, 15, 16, 2, 2, 3, 3]
367
317
  #
368
- # p b.insert([2,2],[15,16])
369
- # # Numo::Int32#shape=[8]
318
+ # b.insert([2,2],[15,16])
319
+ # # => Numo::Int32#shape=[8]
370
320
  # # [1, 1, 15, 16, 2, 2, 3, 3]
371
321
  #
372
- # p b.insert([2,1],[15,16])
373
- # # Numo::Int32#shape=[8]
322
+ # b.insert([2,1],[15,16])
323
+ # # => Numo::Int32#shape=[8]
374
324
  # # [1, 16, 1, 15, 2, 2, 3, 3]
375
325
  #
376
- # p b.insert([2,0,1],[15,16,17])
377
- # # Numo::Int32#shape=[9]
326
+ # b.insert([2,0,1],[15,16,17])
327
+ # # => Numo::Int32#shape=[9]
378
328
  # # [16, 1, 17, 1, 15, 2, 2, 3, 3]
379
329
  #
380
- # p b.insert(2..3, [15, 16])
381
- # # Numo::Int32#shape=[8]
330
+ # b.insert(2..3, [15, 16])
331
+ # # => Numo::Int32#shape=[8]
382
332
  # # [1, 1, 15, 2, 16, 2, 3, 3]
383
333
  #
384
- # p b.insert(2, [7.13, 0.5])
385
- # # Numo::Int32#shape=[8]
334
+ # b.insert(2, [7.13, 0.5])
335
+ # # => Numo::Int32#shape=[8]
386
336
  # # [1, 1, 7, 0, 2, 2, 3, 3]
387
337
  #
388
- # p x = Numo::DFloat.new(2,4).seq
389
- # # Numo::DFloat#shape=[2,4]
338
+ # x = Numo::DFloat.new(2,4).seq
339
+ # # => Numo::DFloat#shape=[2,4]
390
340
  # # [[0, 1, 2, 3],
391
341
  # # [4, 5, 6, 7]]
392
342
  #
393
- # p x.insert([1,3],999,axis:1)
394
- # # Numo::DFloat#shape=[2,6]
343
+ # x.insert([1,3],999,axis:1)
344
+ # # => Numo::DFloat#shape=[2,6]
395
345
  # # [[0, 999, 1, 2, 999, 3],
396
346
  # # [4, 999, 5, 6, 999, 7]]
397
347
 
@@ -441,23 +391,23 @@ module Numo
441
391
 
442
392
  class << self
443
393
  # @example
444
- # p a = Numo::DFloat[[1, 2], [3, 4]]
445
- # # Numo::DFloat#shape=[2,2]
394
+ # a = Numo::DFloat[[1, 2], [3, 4]]
395
+ # # => Numo::DFloat#shape=[2,2]
446
396
  # # [[1, 2],
447
397
  # # [3, 4]]
448
398
  #
449
- # p b = Numo::DFloat[[5, 6]]
450
- # # Numo::DFloat#shape=[1,2]
399
+ # b = Numo::DFloat[[5, 6]]
400
+ # # => Numo::DFloat#shape=[1,2]
451
401
  # # [[5, 6]]
452
402
  #
453
- # p Numo::NArray.concatenate([a,b],axis:0)
454
- # # Numo::DFloat#shape=[3,2]
403
+ # Numo::NArray.concatenate([a,b],axis:0)
404
+ # # => Numo::DFloat#shape=[3,2]
455
405
  # # [[1, 2],
456
406
  # # [3, 4],
457
407
  # # [5, 6]]
458
408
  #
459
- # p Numo::NArray.concatenate([a,b.transpose], axis:1)
460
- # # Numo::DFloat#shape=[2,3]
409
+ # Numo::NArray.concatenate([a,b.transpose], axis:1)
410
+ # # => Numo::DFloat#shape=[2,3]
461
411
  # # [[1, 2, 5],
462
412
  # # [3, 4, 6]]
463
413
 
@@ -509,8 +459,10 @@ module Numo
509
459
  arrays.each do |a|
510
460
  fst = lst
511
461
  lst = fst + (a.shape[axis-nd]||1)
512
- refs[axis] = fst...lst
513
- result[*refs] = a
462
+ if lst > fst
463
+ refs[axis] = fst...lst
464
+ result[*refs] = a
465
+ end
514
466
  end
515
467
  result
516
468
  end
@@ -519,15 +471,15 @@ module Numo
519
471
  # @example
520
472
  # a = Numo::Int32[1,2,3]
521
473
  # b = Numo::Int32[2,3,4]
522
- # p Numo::NArray.vstack([a,b])
523
- # # Numo::Int32#shape=[2,3]
474
+ # Numo::NArray.vstack([a,b])
475
+ # # => Numo::Int32#shape=[2,3]
524
476
  # # [[1, 2, 3],
525
477
  # # [2, 3, 4]]
526
478
  #
527
479
  # a = Numo::Int32[[1],[2],[3]]
528
480
  # b = Numo::Int32[[2],[3],[4]]
529
- # p Numo::NArray.vstack([a,b])
530
- # # Numo::Int32#shape=[6,1]
481
+ # Numo::NArray.vstack([a,b])
482
+ # # => Numo::Int32#shape=[6,1]
531
483
  # # [[1],
532
484
  # # [2],
533
485
  # # [3],
@@ -546,14 +498,14 @@ module Numo
546
498
  # @example
547
499
  # a = Numo::Int32[1,2,3]
548
500
  # b = Numo::Int32[2,3,4]
549
- # p Numo::NArray.hstack([a,b])
550
- # # Numo::Int32#shape=[6]
501
+ # Numo::NArray.hstack([a,b])
502
+ # # => Numo::Int32#shape=[6]
551
503
  # # [1, 2, 3, 2, 3, 4]
552
504
  #
553
505
  # a = Numo::Int32[[1],[2],[3]]
554
506
  # b = Numo::Int32[[2],[3],[4]]
555
- # p Numo::NArray.hstack([a,b])
556
- # # Numo::Int32#shape=[3,2]
507
+ # Numo::NArray.hstack([a,b])
508
+ # # => Numo::Int32#shape=[3,2]
557
509
  # # [[1, 2],
558
510
  # # [2, 3],
559
511
  # # [3, 4]]
@@ -574,16 +526,16 @@ module Numo
574
526
  # @example
575
527
  # a = Numo::Int32[1,2,3]
576
528
  # b = Numo::Int32[2,3,4]
577
- # p Numo::NArray.dstack([a,b])
578
- # # Numo::Int32#shape=[1,3,2]
529
+ # Numo::NArray.dstack([a,b])
530
+ # # => Numo::Int32#shape=[1,3,2]
579
531
  # # [[[1, 2],
580
532
  # # [2, 3],
581
533
  # # [3, 4]]]
582
534
  #
583
535
  # a = Numo::Int32[[1],[2],[3]]
584
536
  # b = Numo::Int32[[2],[3],[4]]
585
- # p Numo::NArray.dstack([a,b])
586
- # # Numo::Int32#shape=[3,1,2]
537
+ # Numo::NArray.dstack([a,b])
538
+ # # => Numo::Int32#shape=[3,1,2]
587
539
  # # [[[1, 2]],
588
540
  # # [[2, 3]],
589
541
  # # [[3, 4]]]
@@ -599,8 +551,8 @@ module Numo
599
551
  # @example
600
552
  # x = Numo::Int32[1,2,3]
601
553
  # y = Numo::Int32[2,3,4]
602
- # p Numo::NArray.column_stack([x,y])
603
- # # Numo::Int32#shape=[3,2]
554
+ # Numo::NArray.column_stack([x,y])
555
+ # # => Numo::Int32#shape=[3,2]
604
556
  # # [[1, 2],
605
557
  # # [2, 3],
606
558
  # # [3, 4]]
@@ -640,23 +592,23 @@ module Numo
640
592
  end # class << self
641
593
 
642
594
  # @example
643
- # p a = Numo::DFloat[[1, 2], [3, 4]]
644
- # # Numo::DFloat#shape=[2,2]
595
+ # a = Numo::DFloat[[1, 2], [3, 4]]
596
+ # # => Numo::DFloat#shape=[2,2]
645
597
  # # [[1, 2],
646
598
  # # [3, 4]]
647
599
  #
648
- # p b = Numo::DFloat[[5, 6]]
649
- # # Numo::DFloat#shape=[1,2]
600
+ # b = Numo::DFloat[[5, 6]]
601
+ # # => Numo::DFloat#shape=[1,2]
650
602
  # # [[5, 6]]
651
603
  #
652
- # p a.concatenate(b,axis:0)
653
- # # Numo::DFloat#shape=[3,2]
604
+ # a.concatenate(b,axis:0)
605
+ # # => Numo::DFloat#shape=[3,2]
654
606
  # # [[1, 2],
655
607
  # # [3, 4],
656
608
  # # [5, 6]]
657
609
  #
658
- # p a.concatenate(b.transpose, axis:1)
659
- # # Numo::DFloat#shape=[2,3]
610
+ # a.concatenate(b.transpose, axis:1)
611
+ # # => Numo::DFloat#shape=[2,3]
660
612
  # # [[1, 2, 5],
661
613
  # # [3, 4, 6]]
662
614
 
@@ -690,36 +642,40 @@ module Numo
690
642
  result = self.class.zeros(*self_shape)
691
643
  lst = shape[axis]
692
644
  refs = [true] * ndim
693
- refs[axis] = 0...lst
694
- result[*refs] = self
645
+ if lst > 0
646
+ refs[axis] = 0...lst
647
+ result[*refs] = self
648
+ end
695
649
  arrays.each do |a|
696
650
  fst = lst
697
651
  lst = fst + (a.shape[axis-ndim] || 1)
698
- refs[axis] = fst...lst
699
- result[*refs] = a
652
+ if lst > fst
653
+ refs[axis] = fst...lst
654
+ result[*refs] = a
655
+ end
700
656
  end
701
657
  result
702
658
  end
703
659
 
704
660
  # @example
705
- # p x = Numo::DFloat.new(9).seq
706
- # # Numo::DFloat#shape=[9]
661
+ # x = Numo::DFloat.new(9).seq
662
+ # # => Numo::DFloat#shape=[9]
707
663
  # # [0, 1, 2, 3, 4, 5, 6, 7, 8]
708
664
  #
709
- # pp x.split(3)
710
- # # [Numo::DFloat(view)#shape=[3]
665
+ # x.split(3)
666
+ # # => [Numo::DFloat(view)#shape=[3]
711
667
  # # [0, 1, 2],
712
668
  # # Numo::DFloat(view)#shape=[3]
713
669
  # # [3, 4, 5],
714
670
  # # Numo::DFloat(view)#shape=[3]
715
671
  # # [6, 7, 8]]
716
672
  #
717
- # p x = Numo::DFloat.new(8).seq
718
- # # Numo::DFloat#shape=[8]
673
+ # x = Numo::DFloat.new(8).seq
674
+ # # => Numo::DFloat#shape=[8]
719
675
  # # [0, 1, 2, 3, 4, 5, 6, 7]
720
676
  #
721
- # pp x.split([3, 5, 6, 10])
722
- # # [Numo::DFloat(view)#shape=[3]
677
+ # x.split([3, 5, 6, 10])
678
+ # # => [Numo::DFloat(view)#shape=[3]
723
679
  # # [0, 1, 2],
724
680
  # # Numo::DFloat(view)#shape=[2]
725
681
  # # [3, 4],
@@ -766,15 +722,15 @@ module Numo
766
722
  end
767
723
 
768
724
  # @example
769
- # p x = Numo::DFloat.new(4,4).seq
770
- # # Numo::DFloat#shape=[4,4]
725
+ # x = Numo::DFloat.new(4,4).seq
726
+ # # => Numo::DFloat#shape=[4,4]
771
727
  # # [[0, 1, 2, 3],
772
728
  # # [4, 5, 6, 7],
773
729
  # # [8, 9, 10, 11],
774
730
  # # [12, 13, 14, 15]]
775
731
  #
776
- # pp x.hsplit(2)
777
- # # [Numo::DFloat(view)#shape=[4,2]
732
+ # x.hsplit(2)
733
+ # # => [Numo::DFloat(view)#shape=[4,2]
778
734
  # # [[0, 1],
779
735
  # # [4, 5],
780
736
  # # [8, 9],
@@ -785,8 +741,8 @@ module Numo
785
741
  # # [10, 11],
786
742
  # # [14, 15]]]
787
743
  #
788
- # pp x.hsplit([3, 6])
789
- # # [Numo::DFloat(view)#shape=[4,3]
744
+ # x.hsplit([3, 6])
745
+ # # => [Numo::DFloat(view)#shape=[4,3]
790
746
  # # [[0, 1, 2],
791
747
  # # [4, 5, 6],
792
748
  # # [8, 9, 10],
@@ -811,47 +767,47 @@ module Numo
811
767
  end
812
768
 
813
769
  # @example
814
- # p a = Numo::NArray[0,1,2]
815
- # # Numo::Int32#shape=[3]
770
+ # a = Numo::NArray[0,1,2]
771
+ # # => Numo::Int32#shape=[3]
816
772
  # # [0, 1, 2]
817
773
  #
818
- # p a.tile(2)
819
- # # Numo::Int32#shape=[6]
774
+ # a.tile(2)
775
+ # # => Numo::Int32#shape=[6]
820
776
  # # [0, 1, 2, 0, 1, 2]
821
777
  #
822
- # p a.tile(2,2)
823
- # # Numo::Int32#shape=[2,6]
778
+ # a.tile(2,2)
779
+ # # => Numo::Int32#shape=[2,6]
824
780
  # # [[0, 1, 2, 0, 1, 2],
825
781
  # # [0, 1, 2, 0, 1, 2]]
826
782
  #
827
- # p a.tile(2,1,2)
828
- # # Numo::Int32#shape=[2,1,6]
783
+ # a.tile(2,1,2)
784
+ # # => Numo::Int32#shape=[2,1,6]
829
785
  # # [[[0, 1, 2, 0, 1, 2]],
830
786
  # # [[0, 1, 2, 0, 1, 2]]]
831
787
  #
832
- # p b = Numo::NArray[[1, 2], [3, 4]]
833
- # # Numo::Int32#shape=[2,2]
788
+ # b = Numo::NArray[[1, 2], [3, 4]]
789
+ # # => Numo::Int32#shape=[2,2]
834
790
  # # [[1, 2],
835
791
  # # [3, 4]]
836
792
  #
837
- # p b.tile(2)
838
- # # Numo::Int32#shape=[2,4]
793
+ # b.tile(2)
794
+ # # => Numo::Int32#shape=[2,4]
839
795
  # # [[1, 2, 1, 2],
840
796
  # # [3, 4, 3, 4]]
841
797
  #
842
- # p b.tile(2,1)
843
- # # Numo::Int32#shape=[4,2]
798
+ # b.tile(2,1)
799
+ # # => Numo::Int32#shape=[4,2]
844
800
  # # [[1, 2],
845
801
  # # [3, 4],
846
802
  # # [1, 2],
847
803
  # # [3, 4]]
848
804
  #
849
- # p c = Numo::NArray[1,2,3,4]
850
- # # Numo::Int32#shape=[4]
805
+ # c = Numo::NArray[1,2,3,4]
806
+ # # => Numo::Int32#shape=[4]
851
807
  # # [1, 2, 3, 4]
852
808
  #
853
- # p c.tile(4,1)
854
- # # Numo::Int32#shape=[4,4]
809
+ # c.tile(4,1)
810
+ # # => Numo::Int32#shape=[4,4]
855
811
  # # [[1, 2, 3, 4],
856
812
  # # [1, 2, 3, 4],
857
813
  # # [1, 2, 3, 4],
@@ -894,26 +850,26 @@ module Numo
894
850
  end
895
851
 
896
852
  # @example
897
- # p Numo::NArray[3].repeat(4)
898
- # # Numo::Int32#shape=[4]
853
+ # Numo::NArray[3].repeat(4)
854
+ # # => Numo::Int32#shape=[4]
899
855
  # # [3, 3, 3, 3]
900
856
  #
901
- # p x = Numo::NArray[[1,2],[3,4]]
902
- # # Numo::Int32#shape=[2,2]
857
+ # x = Numo::NArray[[1,2],[3,4]]
858
+ # # => Numo::Int32#shape=[2,2]
903
859
  # # [[1, 2],
904
860
  # # [3, 4]]
905
861
  #
906
- # p x.repeat(2)
907
- # # Numo::Int32#shape=[8]
862
+ # x.repeat(2)
863
+ # # => Numo::Int32#shape=[8]
908
864
  # # [1, 1, 2, 2, 3, 3, 4, 4]
909
865
  #
910
- # p x.repeat(3,axis:1)
911
- # # Numo::Int32#shape=[2,6]
866
+ # x.repeat(3,axis:1)
867
+ # # => Numo::Int32#shape=[2,6]
912
868
  # # [[1, 1, 1, 2, 2, 2],
913
869
  # # [3, 3, 3, 4, 4, 4]]
914
870
  #
915
- # p x.repeat([1,2],axis:0)
916
- # # Numo::Int32#shape=[3,2]
871
+ # x.repeat([1,2],axis:0)
872
+ # # => Numo::Int32#shape=[3,2]
917
873
  # # [[1, 2],
918
874
  # # [3, 4],
919
875
  # # [3, 4]]
@@ -954,30 +910,30 @@ module Numo
954
910
 
955
911
  # Calculate the n-th discrete difference along given axis.
956
912
  # @example
957
- # p x = Numo::DFloat[1, 2, 4, 7, 0]
958
- # # Numo::DFloat#shape=[5]
913
+ # x = Numo::DFloat[1, 2, 4, 7, 0]
914
+ # # => Numo::DFloat#shape=[5]
959
915
  # # [1, 2, 4, 7, 0]
960
916
  #
961
- # p x.diff
962
- # # Numo::DFloat#shape=[4]
917
+ # x.diff
918
+ # # => Numo::DFloat#shape=[4]
963
919
  # # [1, 2, 3, -7]
964
920
  #
965
- # p x.diff(2)
966
- # # Numo::DFloat#shape=[3]
921
+ # x.diff(2)
922
+ # # => Numo::DFloat#shape=[3]
967
923
  # # [1, 1, -10]
968
924
  #
969
- # p x = Numo::DFloat[[1, 3, 6, 10], [0, 5, 6, 8]]
970
- # # Numo::DFloat#shape=[2,4]
925
+ # x = Numo::DFloat[[1, 3, 6, 10], [0, 5, 6, 8]]
926
+ # # => Numo::DFloat#shape=[2,4]
971
927
  # # [[1, 3, 6, 10],
972
928
  # # [0, 5, 6, 8]]
973
929
  #
974
- # p x.diff
975
- # # Numo::DFloat#shape=[2,3]
930
+ # x.diff
931
+ # # => Numo::DFloat#shape=[2,3]
976
932
  # # [[2, 3, 4],
977
933
  # # [5, 1, 2]]
978
934
  #
979
- # p x.diff(axis:0)
980
- # # Numo::DFloat#shape=[1,4]
935
+ # x.diff(axis:0)
936
+ # # => Numo::DFloat#shape=[1,4]
981
937
  # # [[-1, 2, 0, -2]]
982
938
 
983
939
  def diff(n=1,axis:-1)
@@ -1182,18 +1138,20 @@ module Numo
1182
1138
  # @return [Numo::NArray] return outer product
1183
1139
  # @example
1184
1140
  # a = Numo::DFloat.ones(5)
1185
- # => Numo::DFloat#shape=[5]
1186
- # [1, 1, 1, 1, 1]
1141
+ # # => Numo::DFloat#shape=[5]
1142
+ # # [1, 1, 1, 1, 1]
1143
+ #
1187
1144
  # b = Numo::DFloat.linspace(-2,2,5)
1188
- # => Numo::DFloat#shape=[5]
1189
- # [-2, -1, 0, 1, 2]
1145
+ # # => Numo::DFloat#shape=[5]
1146
+ # # [-2, -1, 0, 1, 2]
1147
+ #
1190
1148
  # a.outer(b)
1191
- # => Numo::DFloat#shape=[5,5]
1192
- # [[-2, -1, 0, 1, 2],
1193
- # [-2, -1, 0, 1, 2],
1194
- # [-2, -1, 0, 1, 2],
1195
- # [-2, -1, 0, 1, 2],
1196
- # [-2, -1, 0, 1, 2]]
1149
+ # # => Numo::DFloat#shape=[5,5]
1150
+ # # [[-2, -1, 0, 1, 2],
1151
+ # # [-2, -1, 0, 1, 2],
1152
+ # # [-2, -1, 0, 1, 2],
1153
+ # # [-2, -1, 0, 1, 2],
1154
+ # # [-2, -1, 0, 1, 2]]
1197
1155
 
1198
1156
  def outer(b, axis:nil)
1199
1157
  b = NArray.cast(b)
@@ -1222,17 +1180,19 @@ module Numo
1222
1180
  # @return [Numo::NArray] return Kronecker product
1223
1181
  # @example
1224
1182
  # Numo::DFloat[1,10,100].kron([5,6,7])
1225
- # => Numo::DFloat#shape=[9]
1226
- # [5, 6, 7, 50, 60, 70, 500, 600, 700]
1183
+ # # => Numo::DFloat#shape=[9]
1184
+ # # [5, 6, 7, 50, 60, 70, 500, 600, 700]
1185
+ #
1227
1186
  # Numo::DFloat[5,6,7].kron([1,10,100])
1228
- # => Numo::DFloat#shape=[9]
1229
- # [5, 50, 500, 6, 60, 600, 7, 70, 700]
1187
+ # # => Numo::DFloat#shape=[9]
1188
+ # # [5, 50, 500, 6, 60, 600, 7, 70, 700]
1189
+ #
1230
1190
  # Numo::DFloat.eye(2).kron(Numo::DFloat.ones(2,2))
1231
- # => Numo::DFloat#shape=[4,4]
1232
- # [[1, 1, 0, 0],
1233
- # [1, 1, 0, 0],
1234
- # [0, 0, 1, 1],
1235
- # [0, 0, 1, 1]]
1191
+ # # => Numo::DFloat#shape=[4,4]
1192
+ # # [[1, 1, 0, 0],
1193
+ # # [1, 1, 0, 0],
1194
+ # # [0, 0, 1, 1],
1195
+ # # [0, 0, 1, 1]]
1236
1196
 
1237
1197
  def kron(b)
1238
1198
  b = NArray.cast(b)