rover-df 0.3.3 → 0.4.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +10 -1
- data/lib/rover/vector.rb +43 -12
- data/lib/rover/version.rb +1 -1
- data/lib/rover-df.rb +1 -1
- data/lib/rover.rb +4 -4
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b4d4b3b0ef484ca6721db9cb238f1ae634561f2f2479033855cad8f336f3730
|
4
|
+
data.tar.gz: 4db49b9c7983a4a35d6b87aeded4cbf0d874e98aa0cccc241df5b6970c002c07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fdb1d5f164102f8e9aa6d36c6b903852fb8d720929e7e70f4ae5228b229ccc3c4ab84873d5c6d3f7dca5052099371219479c7d5b1e766aeff156a525b03d31e0
|
7
|
+
data.tar.gz: 96923c045bb7767d762e0f8a12415306ec6f5cd72d3c3d8ffb649d0926df8fd32c6f6cf3df279b0e49ab8dc96cd21906e1a50f6fa14a743d8e1bb24cb98a940d
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
## 0.4.0 (2024-06-12)
|
2
|
+
|
3
|
+
- Added `include?` method to vectors
|
4
|
+
- Dropped support for Ruby < 3.1
|
5
|
+
|
6
|
+
## 0.3.4 (2022-07-12)
|
7
|
+
|
8
|
+
- Added `cbrt`, `erf`, `erfc`, and `hypot` methods to vectors
|
9
|
+
- Added `frexp` and `ldexp` methods to vectors
|
10
|
+
- Added `base` argument to `log` method
|
11
|
+
|
1
12
|
## 0.3.3 (2022-07-11)
|
2
13
|
|
3
14
|
- Added `ln`, `log`, `log10`, and `log2` methods to vectors
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ Simple, powerful data frames for Ruby
|
|
6
6
|
|
7
7
|
:evergreen_tree: Uses [Vega](https://github.com/ankane/vega) for visualization
|
8
8
|
|
9
|
-
[](https://github.com/ankane/rover/actions)
|
10
10
|
|
11
11
|
## Installation
|
12
12
|
|
@@ -192,6 +192,7 @@ df[:a] / 5
|
|
192
192
|
df[:a] % 5
|
193
193
|
df[:a] ** 2
|
194
194
|
df[:a].sqrt
|
195
|
+
df[:a].cbrt
|
195
196
|
df[:a].abs
|
196
197
|
```
|
197
198
|
|
@@ -207,6 +208,7 @@ Logarithm
|
|
207
208
|
|
208
209
|
```ruby
|
209
210
|
df[:a].ln # or log
|
211
|
+
df[:a].log(5)
|
210
212
|
df[:a].log10
|
211
213
|
df[:a].log2
|
212
214
|
```
|
@@ -240,6 +242,13 @@ df[:a].acosh
|
|
240
242
|
df[:a].atanh
|
241
243
|
```
|
242
244
|
|
245
|
+
Error function
|
246
|
+
|
247
|
+
```ruby
|
248
|
+
df[:a].erf
|
249
|
+
df[:a].erfc
|
250
|
+
```
|
251
|
+
|
243
252
|
Summary statistics
|
244
253
|
|
245
254
|
```ruby
|
data/lib/rover/vector.rb
CHANGED
@@ -21,6 +21,8 @@ module Rover
|
|
21
21
|
uint: Numo::UInt64
|
22
22
|
}
|
23
23
|
|
24
|
+
NOT_SET = Object.new
|
25
|
+
|
24
26
|
def initialize(data, type: nil)
|
25
27
|
@data = cast_data(data, type: type)
|
26
28
|
raise ArgumentError, "Bad size: #{@data.shape}" unless @data.ndim == 1
|
@@ -87,6 +89,7 @@ module Rover
|
|
87
89
|
if v.is_a?(Vector)
|
88
90
|
Vector.new(v.to_numo.mask(@data))
|
89
91
|
else
|
92
|
+
# TODO return vector unless v is an integer in 0.4.0
|
90
93
|
@data[v]
|
91
94
|
end
|
92
95
|
end
|
@@ -201,7 +204,8 @@ module Rover
|
|
201
204
|
if ndigits == 0
|
202
205
|
Vector.new(@data.round)
|
203
206
|
else
|
204
|
-
|
207
|
+
# TODO pass type
|
208
|
+
Vector.new(@data.to_a.map { |v| v.round(ndigits) })
|
205
209
|
end
|
206
210
|
end
|
207
211
|
|
@@ -209,7 +213,8 @@ module Rover
|
|
209
213
|
if ndigits == 0
|
210
214
|
Vector.new(@data.ceil)
|
211
215
|
else
|
212
|
-
|
216
|
+
# TODO pass type
|
217
|
+
Vector.new(@data.to_a.map { |v| v.ceil(ndigits) })
|
213
218
|
end
|
214
219
|
end
|
215
220
|
|
@@ -217,22 +222,44 @@ module Rover
|
|
217
222
|
if ndigits == 0
|
218
223
|
Vector.new(@data.floor)
|
219
224
|
else
|
220
|
-
|
225
|
+
# TODO pass type
|
226
|
+
Vector.new(@data.to_a.map { |v| v.floor(ndigits) })
|
221
227
|
end
|
222
228
|
end
|
223
229
|
|
224
|
-
[:sqrt, :sin, :cos, :tan, :asin, :acos, :atan, :sinh, :cosh, :tanh, :asinh, :acosh, :atanh, :
|
230
|
+
[:sqrt, :cbrt, :sin, :cos, :tan, :asin, :acos, :atan, :sinh, :cosh, :tanh, :asinh, :acosh, :atanh, :log2, :log10, :exp, :exp2, :erf, :erfc].each do |m|
|
225
231
|
define_method(m) do
|
226
|
-
data
|
227
|
-
if @data.is_a?(Numo::SFloat)
|
228
|
-
Numo::SFloat::Math.send(m, @data)
|
229
|
-
else
|
230
|
-
Numo::DFloat::Math.send(m, @data)
|
231
|
-
end
|
232
|
-
Vector.new(data)
|
232
|
+
Vector.new(Numo::NMath.send(m, @data))
|
233
233
|
end
|
234
234
|
end
|
235
|
-
|
235
|
+
|
236
|
+
def log(base = NOT_SET)
|
237
|
+
if base == NOT_SET
|
238
|
+
Vector.new(Numo::NMath.log(@data))
|
239
|
+
else
|
240
|
+
type = self.type == :float32 ? :float32 : :float64
|
241
|
+
Vector.new(@data.to_a.map { |v| Math.log(v, base) }, type: type)
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
def ln
|
246
|
+
log
|
247
|
+
end
|
248
|
+
|
249
|
+
def hypot(y)
|
250
|
+
y = y.to_numo if y.is_a?(Rover::Vector)
|
251
|
+
Vector.new(Numo::NMath.hypot(@data, y))
|
252
|
+
end
|
253
|
+
|
254
|
+
def frexp
|
255
|
+
fraction, exponent = Numo::NMath.frexp(@data)
|
256
|
+
[Vector.new(fraction), Vector.new(exponent)]
|
257
|
+
end
|
258
|
+
|
259
|
+
def ldexp(exponent)
|
260
|
+
exponent = exponent.to_numo if exponent.is_a?(Rover::Vector)
|
261
|
+
Vector.new(Numo::NMath.ldexp(@data, exponent))
|
262
|
+
end
|
236
263
|
|
237
264
|
def each(&block)
|
238
265
|
@data.each(&block)
|
@@ -292,6 +319,10 @@ module Rover
|
|
292
319
|
size == 0
|
293
320
|
end
|
294
321
|
|
322
|
+
def include?(value)
|
323
|
+
to_a.include?(value)
|
324
|
+
end
|
325
|
+
|
295
326
|
def zip(other, &block)
|
296
327
|
to_a.zip(other.to_a, &block)
|
297
328
|
end
|
data/lib/rover/version.rb
CHANGED
data/lib/rover-df.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
require_relative "rover"
|
data/lib/rover.rb
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
require "numo/narray"
|
3
3
|
|
4
4
|
# modules
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
require_relative "rover/data_frame"
|
6
|
+
require_relative "rover/group"
|
7
|
+
require_relative "rover/vector"
|
8
|
+
require_relative "rover/version"
|
9
9
|
|
10
10
|
module Rover
|
11
11
|
class << self
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rover-df
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: numo-narray
|
@@ -51,14 +51,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '3.1'
|
55
55
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
59
|
version: '0'
|
60
60
|
requirements: []
|
61
|
-
rubygems_version: 3.
|
61
|
+
rubygems_version: 3.5.11
|
62
62
|
signing_key:
|
63
63
|
specification_version: 4
|
64
64
|
summary: Simple, powerful data frames for Ruby
|