Pythonのお勉強 Part64
レス数が950を超えています。1000を超えると書き込みができなくなります。
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに増やすこと。
・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」をNGワード登録推奨
・エラーを解決したいときは、まず
エラー文(勝手に省略/スクショうp等の横着禁止)と
おま環(Pythonのバージョン+OS名IDE名と夫々のバージョン)を書け。
★Pythonのソースコードを5ちゃんに直コピペするとインデントが崩壊するので、
↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをimgur等にうpる「横着」禁止)
ttps://techiedelight.com/compiler/ Run Code機能あり。最近流行中?
ttp://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
◇Pythonオフィシャルサイト http://www.python.org/
◇まとめwiki ttp://python.rdy.jp/
●関連スレ●
くだすれPython(超初心者用) その46【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1577948214/
〇前スレ〇 Pythonのお勉強 Part63
https://mevius.5ch.net/test/read.cgi/tech/1582507911/
次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなってからだいぶ経っつる)### END of TEMPLATE ###
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured numpy.arrayで挿入処理の前では、forを使う使わないなんて全くどうでもいい話の気がするんだが、間違っているか? >>851
私が最初にイメージしたのはnp.zerosかなんかで作成した配列へのforでの挿入
だったので蛇使いはずいぶんコードをコンパクトに抑えるんだなと思ったのですが、
動的にメモリを要素ずつ確保すると時間がかかるという事ですか?
検証してないからわからにゃい… >>853
ご指摘の通りでした、最適な処理は頭の良い人に考えていただいて、
私はただsliding_window_viewを使うのみでした! AをBで切り上げ除算したいときに(eg.5÷3→2)
A + (B - 1) // Bとすれば良いと知ったんですけど
そうなる理由が分からないので、どなたか教えて頂けませんか? 小さめの数字の境界条件を実際にプロットしてみるとわかりやすいよ
例えば、数直線上の 3 と 5 に印を付け、3 ずつの区切りも印を付けてみる
それだけみてもわからなければ、
5 と 6 を 3 ずつ
4 と 7 を 4 ずつ
とかもやってみるといい
すると、 B-1 の意味が見えてくるはず おかしくね、それ
-5割る-1が7になる奇怪な定義
除算の定義が変な言語は沢山あるから何れかの写経?
Bが正ならばAの正負を問わずpythonの//は常に切り下げなので、A//B +1でいいよ 何れにせよその定義だと正数に対しすら切り上げ除算になっていない
4.5割る2が2になってしまうことは理解できる? 検算
(4.5+2-1)//2=5.5//2=2
x//y+1を採用すれば
4.5//2 +1 = 3 除算の妥当な定義は数多あるので、算数に自信がないならmath、rational、decimalあたりの関数を常に引くべき 適切な関数を探すことは概念を学ぶ事でもあるね、math.ceilは浮動小数点誤差の影響受けたっけ?
気にし過ぎだと思うし使わんから知らんけど、fractionあたりにベストなのがありそう x//y+1もpythonの仕様知ってる人じゃ無いと意味が取れないし、厳密さを求めないならceil(x/y)の方がよい >>858
4/2が3になるのは切り上げ除算とは言わなくないか?
正確に何をしたいか書いてない質問者のせいでもあるけど
float同士ならどうせfloatの演算があるのだからmath.ceilで、
int同士なら途中がfloatになるのがなんとなく嫌だからb-1足すかなあ 必ず切り下げという性質を使って、-(-a//b)とかでもいいかもね いま、ウトウトと寝てる時にパッと動かないプログラムの解決方法がうかんだ。
取りあえずPC立ち上げて、修正したら治った。
「やればできる」ってティモンディの言葉が頭にうかんだww 確かに考えが煮詰まっちゃうと何やってもダメだね
他の事するか寝た方が良い結果になる事が多い >>874
考えが煮詰まるならなんら問題ないのでは?
行き詰まるなら問題だけど 煮詰まる=頭がフットーする=ショート寸前→オーバーヒートして活動停止直前 誤用が幅を利かせてる
1980年頃から芸能人が広めた
最初に松山千春が使っててアホかと思ったら
そのうち日本中がアホだらけになり
今じゃ俺の方が間違ってると言われる 夢で解法が浮かぶことあるよな
ずっと脳みそが考えててくれてるんだろうな そういう、もともとの字義と異なる意味付けする慣用句って絶対的なもんじゃないと思うがなぁ。
大昔に誰かが考えた例え話を他の人が真似して広まっただけでしょ。 そこは行間ってやつで各々の解釈でしょ
偉ぶりたい人が本当はこういう意味だって言いたいだけ
そもそもスレ違いなのでやめよ クソどうでもいい突っ込みありがとう
確かに行き詰まるの方が適切かもね
学びました 発生するのはクラスター「感染」
クラスターそれ自体が発生するような言い方をするマスゴミが多すぎる
NHKも例外ではない pythonスレでそんな報告されてもどうしろちゅーねん >>885
スレチだけどクラスターそれ自体は発生するよ
そこで感染するか否かも別としてね >>889
まぁ、クラスター=集団だから、意味だけなら確かにそうだね
でも、マスゴミの使い方はクラスター=集団「感染」(disease cluster)だからなぁ
カタカナ語を乱用する悪いところだよ
Wikipediaでさえ間違えた使い方をしてる
pythonなどのプログラミングでも、特定の用語をわかってるようでわかってない使い方するのと同じだな
厳密な使い方をしないと、プログラマ間での引き継ぎなどの意思疎通ができなかったりする USBメモリの事をUSBと省略するようなもんでは?
誤解が生じない文脈であればそれで良い
コロナの文脈で「クラスター」と来たら100%集団感染を指すことは一般的な合意があるから問題ないと思うが >>891
USBと言えばUSBメモリの事なのかw
誤解してミスっても許されるから良いんだろうけど
そんな文化の会社嫌だなぁ 部下が「USBに保存して持ってきました」と言ったら普通はUSBメモリの事だと解釈すると思うんだが
日本語は文脈による推察が多い言語でそこが問題点ではあるけど簡略化出来るのが良いところでもある
齟齬が生じるような場面で簡略形は使うべきでは無いし正しく伝えるべきではあるが
文脈から推察出来る状態で推察出来ない者はそちらの不足
クラスターもUSBも同様
解釈出来ない方が使えないバカ こういうのは言われて何言ってるか
わからなかった時に切れたらいい
わかってるのに 「USB 挿したら情報漏洩のアラームが鳴るよ」
と言った場合、どうするんだろう?
「USBメモリに決まってんだろ、バカ」と言われるんだろうな >>892
日常生活でも重さや距離を「キロ」、データ容量を「ギガ」と言ったりするのはよくあると思うがいちいち噛み付いてるんか? >>890
集団感染の意味でクラスターとかクラスターが発生するという言い方は
USやUKを含む海外メディアや医学論文でも一般的に使われてるので
君のほうが間違ってると思うよ >>897
IT関連で5Gじゃ何を意味しているのかわからないじゃん >>901
メディアでは日本と同じように省略された用法ももちろんあるだろうが、
医学分野ではDisease clusterという一応きちんとした言い方があるのは事実
Disease cluster - Wikipedia (en)
https://en.wikipedia.org/wiki/Disease_cluster >>903
省略してるわけじゃなく
コロナでクラスターといえばひとつ
美しい日本語は関係ない 別の言い方があるからといってクラスターを集団感染の意味で使うのが間違いということにはならないけど?
間違いだと考えた理由はそれだけ? >>902
そりゃあ文脈が不明な状態で5Gとだけ言われても分からないよw 「自分は用語をキチンと理解しているので厳密に使い分けることが出来る。他の奴らは理解できていないから適当に使っている」と思っちゃう症状はあるよねえ Pythonと言われてもPython2か3か分からんぜ 最近psdの切り出しを自動で行おうとpythonを始めたのですが、パーツを全画面で保存したいのですがtuple警告が出て全画面保存出来ませんでした。
どこが間違っているのでしょうか。
あと、現在読み込んでいるファイル名の取得をしたかったのですが、それらしいメソッドを見つけられませんでした。
osか何かで取得するのでしょうか。
初歩的な質問ですみません。
アナコンダのpython3.8 win
psd-toolsは1.9.17
import psd_tools
psd = psd_tools.PSDImage.open('psd_test.psd')
if 'psd_name' not in locals():
# print('リストは空です')
psd_name = []
for layer in psd:
print(layer.name)
psd_name.append(layer.name)
layer.visible = True
layer.top = 0
layer.left = 0
layer.sizu = psd.size
layer_image = layer.composite()
# layer_image.save('%s.png' % layer.name,bbox=(0,0,1280,2880))
layer_image.save('%s.png' % layer.name,) 初心者はまずエラーを省略せずに(自分の言葉で説明せずに)貼るところから始めよう
環境を書いてるのはとてもよい
psdのレイヤーとカンバスのサイズは必ずしも一致しないけど
レイヤーの方が小さいのにカンバスのサイズを指定してるせいではみ出してるって警告だったりしない?
「現在読み込んでいるファイル名」ってpsd_test.psdのこと?
それなら変数に入れておいて後で参照することはできないのかな? >>912
エラーログを貼らずに申し訳ございません。
色々弄ってしまい再現出来なくなってますが、tupleだから値を入れられないと言うエラーと、おっしゃる通りpsdのカンバスサイズの値をセットしたからはみ出してるみたいなエラーでした。
bboxを指定したらうまくいくのかと思ったのですが……
他のいくつかの言語でpsdをあつかった時には、これまで問題無くカンバスサイズで出力出来ていましたので、psd-toolsもやり方はあると思うのですが良くわかりませんでした。
ファイルネームも確かにopen時にタプル辺りに入れて置けば済むお話なのですが、psd-toolsのプロパティに取得されていないか調べた限り無さそうでしたのでご質問させて頂きました。 横だが、layer.sizu にタイポしてるのはわかった >>914
layer.widthとかrightとかいろいろ試してお手上げになった状態でのアップですみません。
sizeが無視されているのは理解しています... >>890
サーバークライアントの意味でクライアントって言ってたら
相手は客のことだと思ってたでござる 画像の大きさを調べるcv2なんだけど
本体のピクチャフォルダの画像はちゃんと動くのにUSBメモリの画像だとNone Typeエラーが出る
いちいちピクチャフォルダにコピーしてやってたけど面倒くさいので原因を調べたらフォルダの名前が日本語だとエラーになるとわかった
こんなくだらない原因だったわけだけど外国人からしたら日本語なんかどうでもいいってことだな https://qiita.com/SKYS/items/cbde3775e2143cad7455
これかな
日本語パスはライブラリによっては問題になるからファイルパスを直接指定しないで、バイナリをロードしてから呼ぶか、
一旦安全なASCIIのパス名に変換するのが定石かな。
C/C++を使ってみるとわかるけどパス周りはOS依存が結構きつくて取り扱いが難しいんだよね
OpenCVも元はC++なのでその辺の難があるのだと思う >>919
わざわざ丁寧な説明ありがとう
レベルが凄く高い人だなっこてとは凄くわかる 日本語でもC++だと問題無くてPython版CVだけ可笑しかったりする
Pythonの開発陣が日本語というか多言語文字列の扱いに弱い >>920
レベルが高いとは思わないけど、クロスプラットフォーム開発に慣れるとそんなもんかなって思うようになる。
Windowsは癖が強いよ。
>>921
Macユーザーからすると、Win32APIの独特な感じに対応しきれてないという感じがするけどね。
Macだと特に問題ないから。
CではWin32APIに合わせてパスを取り扱わないとうまくいかないのも、WindowsでC++の開発もしてるから知ってる。 Windows10
C++
OpenCV
UTF-8
で問題無し ユーザー名・ファイルパスなどシステム関係に、ascii 以外を使ったらダメ!
何百種類も言語があるので、誰もascii以外でテストしないから
日本人が韓国語・中国語でテストしないのと同じ
ウェブ系・Linux は、UTF-8 で統一されているけど、
Windows は、CP932, UTF-16 とか独特だから、互換性がない
また、ファイルシステムでも異なる。
Linuxのext4、WindowsのNTFS 何百種類と言うほどあるか?
日本人だが、各言語でテストするがなぁ。。
Ruby大好き君みたいな思い込みだな。 その何百種類を列挙してみたまえ
日本では195国を承認+1の日本自身で
196国ってのが定説なのでな N=196として大体O(N^3)くらいまでの処理なら可能なのか ただまあ、UTF8にちゃんと対応してたら今のWindowsで問題が起こることはあんまりない気がするんだが。
外部ライブラリも、まずtempディレクトリにファイルコピってから読み込んだりしない? ルートパスのマルチバイト問題か
そもそもユーザー名に日本語使ってたら
特にanacondaでエラー出まくったり >>930
Anaconda は history (~/.python_history) に日本語が入ると
次回起動時にエラー出まくるな 昔し、プログラムで文字処理をしてたとき日本語が大嫌いになりましたw たしかにpythonで日本語が糞だった時期はあるが
その頃は他の言語でも同様に糞だった
今のpythonはそこまで糞じゃない
バグがまだあるのは認める やはり、>>911のレイヤーを全画面(psd.widrh psd.heightのサイズ)で保存する方法は難しいでしょうか……
いろいろggrksで読んでみましたが、それっぽい記述をみつけられませんでした。 >>937
大昔、Adobe内蔵のJavaScriptもどきでレイヤーごとの保存操作をしたことあるけど、そもそも「そういうもの」というか、内部ではレイヤーはレイヤーの大きさでしか記録されてないような気がした
いっそ、レイヤーを読み込んだ後、それのキャンバスを画像サイズに拡張する処理を入れて、それから保存してはどうだろう >>911
layer.sizu = (3600, 4800)
#.sizu もそのまま
で問題無い layer_image = layer.composite(viewport=(0, 0, 3600, 4800))
でも画像サイズ変わったわ from PIL import Image
image = Image.fromarray(layer.numpy()).resize((3600, 4800))
でもいけるっぽい 皆様、レスありがとうございます。
>>938 他の言語いくつかでは可能でしたし、何よりフォトショの標準スプリクトで遅いとは言え可能なので、なんらかの方法はあるのかなとおもってました。ただ、今過去に作った物を見直すと確かに全画面の透明レイヤーを合成してる物もありました。
>>939 layer.sizu = (3600, 4800)では、私も最初それで可能と思ったのですが、なぜかダメでした。。(無視されました)
>>940 layer_image = layer.composite(viewport=(0, 0, 3600, 4800))で一応うまくいきました。 大変ありがとうございます。 ただこのままだと0, 0起点で出力されましたのでレイヤのプロパティから位置を計算するメソッドを加筆すれば上手くいきそうです。
>>941 PILはまだ読んでませんでしたので、これから読んで組み込み可能か調べてみます。
まだ完全ではありませんが、だいぶやりたいことが出来かけてきました。
もう少し色々弄ってみたいと思います。
またどうしてもお手上げだったらお教え頂けますと嬉しいです。 できた
a = (layer.numpy().astype(np.float32) * 255).astype(np.uint8)
Image.fromarray(a).resize((3600, 4800)).save(filename, format='PNG') Imagemagick とかで出来ないのか?
Ruby on Rails ですら、これを使っているのにw 脆弱性だらけのゴミがなんだって?
脆弱なのはお前の頭だけにしておけよ 今のSNS業界だと画像を一列に並べる需要がある
そこで整形ソフトの出番になる
画像リサイズ切りぬきだけで世界のマシンパワーの5%くらい使ってるはずだ >>948
世界のマシンパワーの殆どは仮想通貨採掘に費やされてるよ お世話になります。
textへ出力する際に上手く改行ができないので、知恵をお貸し頂きたいです。
【書き出したtextファイル内容(実際の出力)】
1
2
['変数X(0.1)、変数Y(0.1)\n', '変数X(0.1)、変数Y(0.2)\n'・・・(省略)・・・'変数X(1.0)、変数Y(1.0)\n',
a
b
・・・(省略)
【本来書き出したい内容】
・・・(省略)
1
2
変数X(0.1)、変数Y(0.1)
変数X(0.1)、変数Y(0.2)
・
・(省略)
変数X(1.0)、変数Y(1.0)
a
b
・・・(省略) 【出力部分のコード】
・・・(省略)
with open(filename+".txt", "w+", encoding="UTF-8") as exportfile:
print(exmojiretu, file=exportfile)
【xmojieretuの中身】
1
2
['変数X(0.1)、変数Y(0.1)\n', '変数X(0.1)、変数Y(0.2)\n',・・・(省略)・・・'変数X(1.0)、変数Y(1.0)\n']
a
b
かなり初歩的なことかと思いますが、何卒宜しくお願い致します。 レス数が950を超えています。1000を超えると書き込みができなくなります。