Started construction 🚧

This commit is contained in:
Chris Watson 2019-05-06 11:35:26 -07:00
parent 444e04a326
commit 2cb01cd404
3 changed files with 1399 additions and 2 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
class Array(T)
# Tests whether all elements evaluate to true
def all?
each { |i| if !!i == false
return false
end }
true
end
# Tests whether any of the elements evaluate to true
def any?
each { |i| if !!i == true
return true
end }
false
end
# Get the array's dimensions
def shape
max = max_by { |i| i.is_a?(Array) ? i.size : i }
max.is_a?(Array) ? [size, max.size] : [max]
end
end

255
src/apatite/narray.cr Normal file
View File

@ -0,0 +1,255 @@
module Apatite
class NArray(T) < Array(T)
include Indexable(T)
include Comparable(NArray)
getter size : Int32
getter shape : Array(Int32)
getter ndim : Int32
def initialize(@selection : T, @dtype = Int32)
@size = @selection.size
@shape = @selection.shape
@ndim = @shape.size
super(1, @selection)
end
# def self.new(shape : Array(Int32), &block : Int32 -> T)
# end
# def ==(other : NArray)
# end
# # :nodoc:
# def ==(other)
# false
# end
# def <=>(other : NArray)
# end
# def &(other : NArray(U)) forall U
# end
# def |(other : NArray(U)) forall U
# end
# def +(other : NArray(U)) forall U
# end
# def -(other : NArray(U)) forall U
# end
# def *(times : Int)
# end
# def <<(value : T)
# end
# @[AlwaysInline]
# def []=(index : Int, value : T)
# end
# def []=(index : Int, count : Int, value : T)
# end
# def []=(range : Range(Int, Int), value : T)
# end
# def []=(index : Int, count : Int, values : NArray(T))
# end
# def []=(range : Range(Int, Int), values : NArray(T))
# end
# def [](range : Range(Int, Int))
# end
# def [](start : Int, count : Int)
# end
def all?
flatten.all?
end
def any?
flatten.any?
end
# def arg_max
# end
# def arg_min
# end
# def arg_partition
# end
# def arg_sort
# end
# def as_type
# end
# def byte_swap(inplace = false)
# end
# def choose
# end
# def clip
# end
# def compress
# end
# def conj
# end
# def conjugate
# end
# def copy
# end
# def cum_prod
# end
# def cum_sum
# end
# def diagonal
# end
# def dot
# end
# def dump
# end
# def dumps
# end
# def fill
# end
# def flatten
# end
# def get_field
# end
# def item
# end
# def item_set
# end
# def max
# end
# def mean
# end
# def min
# end
# def new_byte_order
# end
# def non_zero
# end
# def partition
# end
# def prod
# end
# def ptp
# end
# def put
# end
# def ravel
# end
# def repeat
# end
# def repeat
# end
# def reshape
# end
# def resize
# end
# def round
# end
# def search_sorted
# end
# def set_field
# end
# def set_flags
# end
# def sort
# end
# def squeeze
# end
# def std
# end
# def sum
# end
# def swap_axes
# end
# def take
# end
# def to_bytes
# end
# def to_a
# end
# def to_json
# end
# def to_s
# end
# def to_unsafe
# end
# def to_yaml
# end
# def trace
# end
# def transpose
# end
# @[AlwaysInline]
# def unsafe_fetch(index : Int)
# @buffer[index]
# end
# def var
# end
# def view
# end
end
end