rover-df 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 44146e3081c968813848026d2a7f785527a0bb55af0a1978a8087d0dcc7a568a
4
- data.tar.gz: db64041059937e131d27799739506ad27a78d19be3bdd90d299bcee855b54755
3
+ metadata.gz: 7a1b47800b1d7e9b84e7a1976f2cfbc551e9dee6a9a0ec39b3759b6564e4e278
4
+ data.tar.gz: a41f8ed9bdeabc01a0fc83bdb98487a375bfa6f6d1d2fd4041db7cc38f803482
5
5
  SHA512:
6
- metadata.gz: f66190d43258016bc54da2ee42078087784e2c245095fceced4f617b4343130c8e324fd07a4fb0a08b6e23f512268d517e330087959dd7a78187228383189ea8
7
- data.tar.gz: a1d3a80ff866d72dc32a0067240c32f7a24c602a736d932dba394af8b760566591ff0d2942a61243230016182a3a5fad2e635fa1095f809caf477146d0810868
6
+ metadata.gz: 7b2e10547e204ff592757373bc93c7d8dfd004802a87e10ca886c47771c29aa717fe19ef11e20c9b830765c64c6ef65db5d0bfead0d1b064c680938a1cca8184
7
+ data.tar.gz: ce25fac82709a912e78c871f356e681ad8f85a599db1eeea58d5654ddf3928554d70a7434e92beb4352c81b69307dce77062baedd8669f2584bda54f1e40ee42
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 0.3.3 (2022-07-11)
2
+
3
+ - Added `ln`, `log`, `log10`, and `log2` methods to vectors
4
+ - Added `exp` and `exp2` methods to vectors
5
+ - Added `sin`, `cos`, `tan`, `asin`, `acos`, and `atan` methods to vectors
6
+ - Added `sinh`, `cosh`, `tanh`, `asinh`, `acosh`, and `atanh` methods to vectors
7
+ - Added `round`, `ceil`, and `floor` methods to vectors
8
+ - Added `empty?` method to vectors
9
+ - Added `rename` method to data frames
10
+
1
11
  ## 0.3.2 (2022-07-10)
2
12
 
3
13
  - Added `sqrt` method to vectors
data/README.md CHANGED
@@ -191,6 +191,53 @@ df[:a] * 5
191
191
  df[:a] / 5
192
192
  df[:a] % 5
193
193
  df[:a] ** 2
194
+ df[:a].sqrt
195
+ df[:a].abs
196
+ ```
197
+
198
+ Rounding
199
+
200
+ ```ruby
201
+ df[:a].round
202
+ df[:a].ceil
203
+ df[:a].floor
204
+ ```
205
+
206
+ Logarithm
207
+
208
+ ```ruby
209
+ df[:a].ln # or log
210
+ df[:a].log10
211
+ df[:a].log2
212
+ ```
213
+
214
+ Exponentiation
215
+
216
+ ```ruby
217
+ df[:a].exp
218
+ df[:a].exp2
219
+ ```
220
+
221
+ Trigonometric functions
222
+
223
+ ```ruby
224
+ df[:a].sin
225
+ df[:a].cos
226
+ df[:a].tan
227
+ df[:a].asin
228
+ df[:a].acos
229
+ df[:a].atan
230
+ ```
231
+
232
+ Hyperbolic functions
233
+
234
+ ```ruby
235
+ df[:a].sinh
236
+ df[:a].cosh
237
+ df[:a].tanh
238
+ df[:a].asinh
239
+ df[:a].acosh
240
+ df[:a].atanh
194
241
  ```
195
242
 
196
243
  Summary statistics
@@ -323,9 +370,11 @@ df.delete(:a)
323
370
  df.except!(:a, :b)
324
371
  ```
325
372
 
326
- Rename a column
373
+ Rename columns
327
374
 
328
375
  ```ruby
376
+ df.rename(a: :new_a, b: :new_b)
377
+ # or
329
378
  df[:new_a] = df.delete(:a)
330
379
  ```
331
380
 
@@ -136,6 +136,17 @@ module Rover
136
136
  alias_method :names, :keys
137
137
  alias_method :vector_names, :keys
138
138
 
139
+ def rename(mapping)
140
+ mapping.each_key do |k|
141
+ check_column(k)
142
+ end
143
+ # use transform_keys! to preserve order
144
+ @vectors.transform_keys! do |k|
145
+ mapping[k] || k
146
+ end
147
+ self
148
+ end
149
+
139
150
  def delete(key)
140
151
  @vectors.delete(key)
141
152
  end
data/lib/rover/vector.rb CHANGED
@@ -197,16 +197,43 @@ module Rover
197
197
  Vector.new(@data.abs)
198
198
  end
199
199
 
200
- def sqrt
201
- data =
202
- if @data.is_a?(Numo::SFloat)
203
- Numo::SFloat::Math.sqrt(@data)
204
- else
205
- Numo::DFloat::Math.sqrt(@data)
206
- end
207
- Vector.new(data)
200
+ def round(ndigits = 0)
201
+ if ndigits == 0
202
+ Vector.new(@data.round)
203
+ else
204
+ map { |v| v.round(ndigits) }
205
+ end
206
+ end
207
+
208
+ def ceil(ndigits = 0)
209
+ if ndigits == 0
210
+ Vector.new(@data.ceil)
211
+ else
212
+ map { |v| v.ceil(ndigits) }
213
+ end
208
214
  end
209
215
 
216
+ def floor(ndigits = 0)
217
+ if ndigits == 0
218
+ Vector.new(@data.floor)
219
+ else
220
+ map { |v| v.floor(ndigits) }
221
+ end
222
+ end
223
+
224
+ [:sqrt, :sin, :cos, :tan, :asin, :acos, :atan, :sinh, :cosh, :tanh, :asinh, :acosh, :atanh, :log, :log2, :log10, :exp, :exp2].each do |m|
225
+ 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)
233
+ end
234
+ end
235
+ alias_method :ln, :log
236
+
210
237
  def each(&block)
211
238
  @data.each(&block)
212
239
  end
@@ -261,10 +288,15 @@ module Rover
261
288
  to_a.any?(&block)
262
289
  end
263
290
 
291
+ def empty?
292
+ size == 0
293
+ end
294
+
264
295
  def zip(other, &block)
265
296
  to_a.zip(other.to_a, &block)
266
297
  end
267
298
 
299
+ # TODO return element instead of vector if no argument in 0.4.0
268
300
  def first(n = 1)
269
301
  if n >= size
270
302
  Vector.new(@data)
@@ -273,6 +305,7 @@ module Rover
273
305
  end
274
306
  end
275
307
 
308
+ # TODO return element instead of vector if no argument in 0.4.0
276
309
  def last(n = 1)
277
310
  if n >= size
278
311
  Vector.new(@data)
data/lib/rover/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rover
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
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.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-10 00:00:00.000000000 Z
11
+ date: 2022-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: numo-narray