俺言語。

自分にしか理解できない言語で書かれた備忘録

【Pycharm】アップデート後にPythonクラッシュ多発2

遅まきながらPycharmを2017.3.2をアップデートしたところ,
Runは問題ないのにdebugで
Process finished with exit code -1073741819 (0xC0000005)
と出て強制終了するエラーが発生。

print文だけの超シンプルなスクリプトでもエラーが出てdebug出来なかったため,
前回とは異なる模様↓oregengo.hatenablog.com

文字は読めないけどPyQtがどうのこうのというサイトを発見。
そういえばPyQtは4のままで5は入れていないような気が。

もともとはAutoになっていたところをPyQt4に変更したところ治った!
f:id:hukkuramamemoti:20180118185120p:plain

まー原因はよくわかんねけどいいか。

【Android】Pythonのnp.delete(arr, range(2))相当な書き方

Pythonでndarrayをある範囲を削除する方法

arr = np.array([1, 2, 3, 4])
np.delete(arr, range(2))
> array([3, 4])

Javaではこんな感じで書くみたい。

// arrはArrayList
arr.subList(0, 2).clear();

【Android】Pythonのnp.zeros相当な書き方

Python

np.zeros(10)
>array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

と書ける物は以下のようにするといいみたい。

Integer [] arr = new Integer[10];
ArrayList<Integer> myList= new ArrayList<>(Arrays.asList(arr));
Collections.fill(myList, 0);//fills all 10 entries with 0

【Android】Pythonのlinspace(range)相当の書き方

Python

val = np.linspace(0, 1, 10)
> array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.])

と書ける物はfor文で作るか自分でクラスを作るしかないみたい。

List list = new ArrayList();
for (int i=0; i<10; i++){
List.add(i);
}

【cmd】コマンドプロンプトからイベントログ出力と削除

一連の処理を.bat化して1クリックのみで処理できるようにした。


まずはイベントログの画面出力。

コマンドはwmic

ログの中身全てを出力すると画面上では見づらいので

ここでは作成時間とメッセージのみ出力

wmic ntevent where "(LogFile = 'system') get TimeGenerated, Message

->
Message                                 TimeGenerated
System ログ ファイルが消去されました。  20170824005734.400493-000


次にログの削除。これは管理者権限が必要。

コマンドはwevtutil

wevtutil cl system

これのみで削除完了。


こちらを参考にさせてもらった。感謝!
イベント ログを消去する
[Windows] wmic コマンドを使ってイベントログを表示する | インフラSEの運用・構築メモ

【Python】numpy ndarrayとmatrixの特徴 覚書き

MATLABからの移行組にはとっつき辛いところが多々あるnumpyの配列,

ndarrayの気付いた点まとめ。


numpyは基本、横ベクトル

xx.shape -> (n, ) はベクトル

x.shape -> (n,m) は配列

array([1, 2, 3])やarange(10)で作成されるのはベクトル

ベクトルは標記こそ横ベクトルだが向きは無い。

よってベクトル(1×N)を転置をしてもMATLABの様にN×1ベクトルにはならない。

ベクトルをイテレータとして使うと数値が一つずつ取り出せる。

e.q. np.range(3) -> 最初:1, 次:2, 次:3

配列をイテレータとして使うと 1×Nのベクトルが取り出される

e.q. np.range([[1, 2, 3], [4, 5, 6]]) -> 最初:[1, 2, 3], 次:[4, 5, 6]

よって配列をスライスする際はベクトルでスライスするか配列(1*N)でスライスするかで

挙動が変わるので注意

data = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])

index1 = np.array([[0, 1, 2]])

data[index1, 0])

-> array([[1, 4, 7]]) # 1*3配列


index2 = np.array([0, 1, 2]) 

data[index2, 0])

-> array([1, 4, 7]) # ベクトル

【Python】listやndarrayの中身をエクセルに張り付けるためにクリップボードへコピー

listやndarrayの中身をエクセルに張り付けて検証や検討をしたい場合に有効。


肝になるのが

・リスト内容標記を使って数値を文字列にして末尾に改行コード\nを追加

・"".join(データ)で文字を結合

import pyperclip

def copy(data):
    temp = [str(i) + "\n" for i in data]
    pyperclip.copy("".join(temp))

    print("data was copied in clipboard")

クリップボードコピー用のモジュール、pyperclipを使って関数化し
リストからクリップボードコピーまで1行で処理可能にした。