rover-df 0.3.3 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
[![Build Status](https://github.com/ankane/rover/workflows/build/badge.svg
|
9
|
+
[![Build Status](https://github.com/ankane/rover/actions/workflows/build.yml/badge.svg)](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
|