numpyでDeprecationWarning: `np.int` is a deprecated alias for the builtin `int`が出るようになった

ゼロから作るDeepLearningをポチポチやってたらp46でタイトルのwarningに遭遇した

以下のバージョンで、

$ python -V
Python 3.10.0
$ pip freeze
numpy==1.21.4

以下のコードで再現する。

import numpy as np
print(np.array([1]).astype(np.int))

np.intint に直せばでなくなる。他の型含め、対応とか詳細は以下を見ればいい。 NumPy 1.20.0 Release Notes — NumPy v1.23.dev0 Manual

2021/1/31リリースのNumpy 1.20.0から出るようになったらしい。 github.com

おまけ

以下のブログでみた件がどうなってるのか確認してみた

cyanatlas.hatenablog.com

import numpy as np

x = np.log(10) > 1  # -> True
print(x, type(x))
print(x == True)
print(x == False)
$ python repro.py 
True <class 'numpy.bool_'>
True
False

特に挙動変わらなさそう

感想

python3.6でpip installすると1.20系じゃなくてnumpy1.19.5が入ったけど、この辺りが理由かもと思ったりした

vscodeでctrl+fでカーソルを右に移動させるショートカット

こんなかんじで書けばいい。

    { "key": "ctrl+f", "command": "cursorRight", "when": "textInputFocus"}

ショートカット一覧からそれっぽい単語で検索して、出てきた結果を見ながら書けば(だいたいは)うまくいく気がする

f:id:sinato0:20211123230756p:plain
検索結果

型エイリアスの定義/参照の順序関係について

Foo を定義しているタイミングに注目してほしいのだけど、以下の実装がエラーや警告もなく普通に動く1

fn main() {
    let a: Foo = 10;
    println!("{}", a);
    type Foo = u32; // Fooの利用箇所より下の行で定義している
}

(変数の定義なんかと同じで)使うタイミングより前で定義しておかないとだめだと思いこんでいたけど、どうやらそんなことはないらしい。ちょっとびっくりした 2

話は以上なんだけど、気になった点をいくつか試したので以下にメモを残しておく

エイリアスの定義を消してみる

上の場合だと type 文がいらないという可能性がなくはないので念の為確認してみる

fn main() {
    let a: Foo = 10;
    println!("{}", a);
}
$ rustc main.rs
error[E0412]: cannot find type `Foo` in this scope
 --> main.rs:2:12
  |
2 |     let a: Foo = 10;
  |            ^^^ not found in this scope

error: aborting due to previous error

For more information about this error, try `rustc --explain E0412`.

普通にエラーになった。やっぱり単に先に定義が反映されているだけっぽい

エイリアス間の順序関係を確認してみる

どうやら type は先に反映されるっぽいことはわかったが、それなら type 間の順序関係はどうなるのか気になった

fn main() {
    let a: Bar = 10;
    type Foo = u32;
    type Bar = Foo;
    println!("{}", a);
}
fn main() {
    let a: Bar = 10;
    type Bar = Foo;
    type Foo = u32;
    println!("{}", a);
}

この2つの実装はどちらも正常に機能する。 Foo を先に定義してないと type Bar = Foo がエラーになるのではと思っていたが(つまり type 間には順序関係があるのではと思っていたが)、そういうわけではなさそう

エイリアス間の順序関係を確認してみる_2

順不同で反映されるなら、同じ名前のエイリアスを複数指定したらどうなるのか気になった

fn main() {
    let a: Foo = 10;
    type Foo = u32;
    type Foo = f32;
    println!("{}", a);
}
$ rustc main.rs
error[E0428]: the name `Foo` is defined multiple times
 --> main.rs:4:5
  |
3 |     type Foo = u32;
  |     --------------- previous definition of the type `Foo` here
4 |     type Foo = f32;
  |     ^^^^^^^^^^^^^^^ `Foo` redefined here
  |
  = note: `Foo` must be defined only once in the type namespace of this block

error: aborting due to previous error

For more information about this error, try `rustc --explain E0428`.

これはエラーになる

エイリアスのスコープを確認してみる

もしかしてブロックよりも大きな単位でエイリアス反映されちゃったりするのかなと不安になったので確認しておく

fn main() {
    let a: Foo = 10;
    {
        type Foo = f32;
    }
    println!("{}", a);
}
$ rustc main.rs
error[E0412]: cannot find type `Foo` in this scope
 --> main.rs:2:12
  |
2 |     let a: Foo = 10;
  |            ^^^ not found in this scope

error: aborting due to previous error

For more information about this error, try `rustc --explain E0412`.

これはエラーになる。ブロックのstatementを上から順番にみていくちょうど前のタイミングで、ブロックの中の type を一通り見ているっぽい

補足


  1. バージョンは rustc 1.42.0 (b8cedc004 2020-03-09) です

  2. rust-analyzer の実装をみてる限りどうにも type の順序を考慮している気がしなくて、実際に試してみたら……という感じでした。見ていたのはこのあたり rust-analyzer/expr.rs at e0de2475208765a171f335dfffde764f96243d41 · rust-analyzer/rust-analyzer · GitHub

翔泳社電子書籍半額_2020/05/05

www.shoeisha.co.jp

しょっちゅうやってるが毎回全部眺めてる...... 今回気になったやつをメモ

気になったやつ

なにもわかってないのでざっと一回読んでおきたい

なにもわかってないのでざっと一回読んでおきたい2

暗号技術のすべて

暗号技術のすべて

  • 作者:IPUSIRON
  • 発売日: 2017/08/03
  • メディア: 単行本(ソフトカバー)

仕事がどうのという理由で買おうとしているが、仕事がどうのとか思うと読む気一切なくなるので個人的に興味あるという気持ちで買いたい

関数型リアクティブプログラミング (Programmer's SELECTION)

関数型リアクティブプログラミング (Programmer's SELECTION)

C++の鈍器のやつに並んでこれも有名な本だと思うので一度読んでみてもいいかなと思った pdf版がみつからなかったのでkindleで買うしかなさそう

読み物として面白そうかなと思ったが難しくて僕には読めないかも

あんまり気が進まないが読んでもいいかもしれない くそでかくてテストもないメソッドやらクラスやらってどうしたらいいのか知りたい(どういうときどうにかしないといけないのかも)

文が書けない

文が書けない2

Visual Studio Codeでコメントを改行した次の行もコメントにしたい

やりたいこと

// とか /// で始まるコメントを複数行続けるときに、都度打ち込むとか最後にまとめてコメントアウトするとかがめんどくさい。コメント行の最後で改行すると、次の行も自動的にコメント行として開始してほしい

やること

これを入れる。

Auto Comment Blocks - Visual Studio Marketplace

デフォルトだと、shift + enterでコメント継続で改行、普通にenterでコメント終わりで改行という挙動になってる。これを反転させる auto-comment-blocks.singleLineBlockOnEnter オプションもあるけどbuggyらしい

デモ

f:id:sinato0:20200504153807g:plain
demo

Visual Studio Codeのターミナルでカーソルが表示されない

vscodeのIntegrated Terminalでzsh使ったらカーソルが表示されなくなった。

ググって出てきた以下の設定を settings.json に書いたら直った

"terminal.integrated.rendererType": "dom"

参考

github.com

最近読んだ本_2020/03/14

雑感

裏世界ピクニック...... 1億点!!


読んだ本

天才の日課が書いてある。最初の1/5くらいは面白かったが途中で飽きてしまった 天才は皆コーヒーを飲んでる

5巻までしか読んでない。6巻が出てることを今知ったのでこれから読む マキマさんすき......

学びを結果に変えるアウトプット大全 (Sanctuary books)

学びを結果に変えるアウトプット大全 (Sanctuary books)

  • 作者:樺沢紫苑
  • 発売日: 2018/08/03
  • メディア: 単行本(ソフトカバー)

前に読んだの忘れてもう一回買ってしまった(あるいは前に読んだことがある気がするだけで、実は読んだことなかったかもしれない)

おもしろかった~ でも女の子が男の子のことを好きになる系のライトノベルを読むの最近ちょっと苦しいなと思った

「えへへ 私なんかでも呼んで頂けたので 来てしまいました」 「でもお二人を見てると同い年とは思えません なんだか凄すぎて…」 たまちゃん、ぼくといっしょに一生井の中で生きていこうな

ちょっと難しくて読んでもよくわからんかった(これまで出てた二冊の本+て感じで、マージがまずくて冗長な感じになってたのもちょっとつらかった) 読み終わってから、自分が興味あったのはもうちょっと現場よりのマネジメントとかシステムの話だったんだな~て気が付いちゃった

伽藍とバザール

伽藍とバザール

  • 作者:E.S.Raymond
  • 発売日: 2010/07/31
  • メディア: 単行本(ソフトカバー)

有名な内容だしなんなら青空文庫で読めるんだけど書泉ブックタワーで見つけて買ってしまった。あんまり消化できてないけどすごく面白かった

あああああ あああああああ あああああ(語彙消失川柳)
もしこの文章を読んだ人がいたら今すぐ買って