タグ付けされた質問 「python」

Pythonは、マルチパラダイム、動的型付け、多目的プログラミング言語です。これは、学習、理解、使用が迅速で、クリーンで統一された構文を適用できるように設計されています。Python 2は2020年1月1日をもって正式にサポートされなくなりました。それでも、バージョン固有のPythonの質問については、[python-2.7]または[python-3.x]タグを追加します。Pythonのバリアントまたはライブラリ(Jython、PyPy、Pandas、Numpyなど)を使用する場合は、タグに含めてください。

3
OctaveよりもSciPyの方が100倍以上遅い、大きなスパース行列の最小の固有ベクトルを見つける
大きな対称正方スパース行列(最大30000x30000)の最小固有値に対応する少数(5-500)の固有ベクトルを計算しようとしています。値の0.1%未満が非ゼロです。 私は現在scipy.sparse.linalg.eigshをシフトインバートモード(sigma = 0.0)で使用しています。これは、トピックに関するさまざまな投稿でわかった解決策です。ただし、ほとんどの場合、問題を解決するのに最大1時間かかります。一方、ドキュメントから予想された最大固有値(私のシステムではサブ秒)を要求すると、関数は非常に高速になります。 私は仕事でMatlabに慣れているので、Octaveで問題を解決しようとしました。これにより、eigs(sigma = 0)を使用して数秒(サブ10秒)で同じ結果が得られました。固有ベクトルの計算を含むアルゴリズムのパラメータースイープを実行したいので、Pythonでもそのような時間の増加が得られるでしょう。 最初にパラメーター(特に許容誤差)を変更しましたが、タイムスケールではあまり変わりませんでした。 私はWindowsでAnacondaを使用していますが、scipyが使用するLAPACK / BLAS(これは非常に苦痛でした)をmkl(デフォルトのAnaconda)からOpenBlas(ドキュメントに従ってOctaveが使用)に切り替えようとしましたが、変更を確認できませんでしたパフォーマンス。 使用したARPACKに変更点があるかどうか(およびその方法)はわかりませんでした。 以下のコードのテストケースを次のドロップボックスフォルダーにアップロードしました:https ://www.dropbox.com/sh/l6aa6izufzyzqr3/AABqij95hZOvRpnnjRaETQmka?dl=0 Pythonで import numpy as np from scipy.sparse import csr_matrix, csc_matrix, linalg, load_npz M = load_npz('M.npz') evals, evecs = linalg.eigsh(M,k=6,sigma=0.0) オクターブで: M=dlmread('M.txt'); M=spconvert(M); [evecs,evals] = eigs(M,6,0); どんな助けもappriciated! コメントと提案に基づいて試したいくつかの追加オプション: オクターブ: eigs(M,6,0)とeigs(M,6,'sm')私は同じ結果を与えます: [1.8725e-05 1.0189e-05 7.5622e-06 7.5420e-07 -1.2239e-18 -2.5674e-16] にeigs(M,6,'sa',struct('tol',2))収束しながら …

4
`classmethod`とメタクラスメソッドの違いは何ですか?
Pythonでは、@classmethodデコレータを使用してクラスメソッドを作成できます。 >>> class C: ... @classmethod ... def f(cls): ... print(f'f called with cls={cls}') ... >>> C.f() f called with cls=<class '__main__.C'> あるいは、メタクラスで通常の(インスタンス)メソッドを使用できます。 >>> class M(type): ... def f(cls): ... print(f'f called with cls={cls}') ... >>> class C(metaclass=M): ... pass ... >>> C.f() f called with cls=<class '__main__.C'> の出力に示されているようにC.f()、これら2つのアプローチは同様の機能を提供します。 @classmethodメタクラスでの通常のメソッドの使用と使用の違いは何ですか?


1
3か月のデータセットによる多変量時系列予測
3か月分のデータ(各行は毎日に対応)を生成し、同じものに対して多変量時系列分析を実行したいと思います。 利用可能な列は- Date Capacity_booked Total_Bookings Total_Searches %Variation 各日付のデータセットには1つのエントリがあり、3か月分のデータがあります。他の変数も予測するために、多変量時系列モデルを適合させたいと思います。 これまでのところ、これは私の試みであり、私は記事を読んで同じことを達成しようとしました。 私も同じことをした- df['Date'] = pd.to_datetime(Date , format = '%d/%m/%Y') data = df.drop(['Date'], axis=1) data.index = df.Date from statsmodels.tsa.vector_ar.vecm import coint_johansen johan_test_temp = data coint_johansen(johan_test_temp,-1,1).eig #creating the train and validation set train = data[:int(0.8*(len(data)))] valid = data[int(0.8*(len(data))):] freq=train.index.inferred_freq from statsmodels.tsa.vector_ar.var_model import VAR model …

7
リストの要素の公平な分割
プレイヤーの評価のリストを考えると、プレイヤー(つまり、評価)をできるだけ2つのグループに分割する必要があります。目標は、チームの累積評価の差を最小限に抑えることです。プレーヤーをチームに分割する方法に制約はありません(1つのチームには2人のプレーヤーがいて、もう1つのチームには10人のプレーヤーがいます)。 例:[5, 6, 2, 10, 2, 3, 4]返すべき([6, 5, 3, 2], [10, 4, 2]) この問題を解決するアルゴリズムを知りたいのですが。私はオンラインプログラミングの入門コースを受講しているので、簡単なアルゴリズムをいただければ幸いです。 次のコードを使用していますが、なんらかの理由で、オンラインコードチェッカーで間違っていると表示されています。 def partition(ratings): set1 = [] set2 =[] sum_1 = 0 sum_2 = 0 for n in sorted(ratings, reverse=True): if sum_1 < sum_2: set1.append(n) sum_1 = sum_1 + n else: set2.append(n) sum_2 = sum_2 + …
12 python  algorithm  list 

2
フィルタリングされたバイナリデカルト積を生成する
問題文 特定の排他的条件でフィルタリングされた完全なバイナリデカルト積(TrueとFalseの特定の数の列のすべての組み合わせを含むテーブル)を生成する効率的な方法を探しています。たとえば、3列/ビットの場合n=3、完全なテーブルを取得します df_combs = pd.DataFrame(itertools.product(*([[True, False]] * n))) 0 1 2 0 True True True 1 True True False 2 True False True 3 True False False ... これは、次のように相互に排他的な組み合わせを定義する辞書によってフィルタリングされることになっています。 mutually_excl = [{0: False, 1: False, 2: True}, {0: True, 2: True}] ここで、キーは上の表の列を示しています。例は次のように読み取られます。 0がFalseで1がFalseの場合、2をTrueにすることはできません 0がTrueの場合、2をTrueにすることはできません これらのフィルターに基づいて、予想される出力は次のとおりです。 0 1 2 1 True …

2
Django:manage.pyの実行は常に中止されます
ローカルにセットアップしようとしている既存のDjangoアプリケーションがあります。仮想環境を作成し、必要なすべての依存関係をインストールした後、実行manage.pyを中止すると、他の有用なエラーメッセージは表示されません。 (venv) $ python manage.py [1] 39973 abort python manage.py 提供されたサブコマンドもすべて中止されるだけで、私は運が悪いときにデバッグする方法を見つけようとしました。 使用するバージョン: python 3.6.8 Django 2.0.2 編集: ようやく問題がわかりました。macOS 10.15(Catalina)を使用している場合、これが役立ちます。 依存関係の1つにcryptographyopensslが必要です。あなたはbrew経由でopensslをインストールし、次にシンボリックリンクを以下に追加できます: cd /usr/local/lib ln -s /usr/local/Cellar/openssl/1.0.2t/lib/libcrypto.1.0.0.dylib libcrypto.dylib ln -s /usr/local/Cellar/openssl/1.0.2t/lib/libssl.1.0.0.dylib libssl.dylib
12 python  django 

4
numpy.median.reduceatの高速代替
この回答に関連して、要素数が等しくないグループを持つ配列の中央値を計算する高速な方法はありますか? 例えば: data = [1.00, 1.05, 1.30, 1.20, 1.06, 1.54, 1.33, 1.87, 1.67, ... ] index = [0, 0, 1, 1, 1, 1, 2, 3, 3, ... ] そして私は、(例えば、中央値グループの数やグループごとの中央値との差異を計算したい0です1.025最初の結果があるので1.00 - 1.025 = -0.025)。したがって、上記の配列の場合、結果は次のようになります。 result = [-0.025, 0.025, 0.05, -0.05, -0.19, 0.29, 0.00, 0.10, -0.10, ...] np.median.reduceat(まだ)存在しないので、これを達成する別の高速な方法はありますか?私のアレイには数百万の行が含まれるため、速度は非常に重要です。 インデックスは連続していて順序付けられていると見なすことができます(そうでない場合は簡単に変換できます)。 パフォーマンス比較のデータ例: import numpy …

7
入力を処理できるデータアダプターが見つかりませんでした:<class 'numpy.ndarray'>、(<class 'list'>型の値を含む{“ <class 'int'>”})
history = model.fit(X, y, batch_size=32, epochs=40, validation_split=0.1) ラインの問題はこれでした エラーを表示: ValueError: Failed to find data adapter that can handle input: &lt;class 'numpy.ndarray'&gt;, (&lt;class 'list'&gt; containing values of types {"&lt;class 'int'&gt;"})
12 python  list  numpy  pycharm 

4
タプルのスライスはリストのスライスとは対照的に新しいオブジェクトを返さない
Python(2および3)。リストスライシングを使用すると、常に次のような新しいオブジェクトが返されます。 l1 = [1,2,3,4] print(id(l1)) l2 = l1[:] print(id(l2)) 出力 &gt;&gt;&gt; 140344378384464 &gt;&gt;&gt; 140344378387272 同じことがタプルで繰り返された場合、同じオブジェクトが返されます。例: t1 = (1,2,3,4) t2 = t1[:] print(id(t1)) print(id(t2)) 出力 &gt;&gt;&gt; 140344379214896 &gt;&gt;&gt; 140344379214896 誰かがこれがなぜ起こっているのかについていくつかの光を当てることができれば素晴らしいでしょう、私のPythonの経験を通して、空のスライスが新しいオブジェクトを返すという印象を受けました。 私の理解では、タプルは不変であるのと同じオブジェクトを返し、その新しいコピーを作成する意味はありません。しかし、繰り返しになりますが、ドキュメントのどこにも記載されていません。
12 python  list  tuples  slice  cpython 

7
Jupyter LabはRAMが足りなくなったときにコンピューターをフリーズさせます-それを防ぐ方法は?
私は最近Jupyter Labの使用を開始しましたが、私の問題は、非常に大きなデータセットを操作することです(通常、データセット自体は私のコンピューターのRAMの約1/4です)。いくつかの変換の後、新しいPythonオブジェクトとして保存すると、メモリ不足になる傾向があります。問題は、使用可能なRAM制限に近づいて、別のRAMスペースを必要とする操作を実行すると、コンピューターがフリーズし、それを修正する唯一の方法は再起動することです。これはJupyter Lab / Notebookのデフォルトの動作ですか、それとも設定すべき設定ですか?通常、コンピュータ全体ではなく、プログラムがクラッシュすることを期待します(RStudioなど)。

8
Mac OSカタリナでCondaとVirtualenvを動作させるにはどうすればよいですか?
以前はMojaveでCondaをスムーズに実行していましたが、Catalinaにアップグレードすると、「anaconda3」フォルダがデスクトップ&gt;再配置されたアイテム&gt;セキュリティ&gt; anaconda3に移動することがわかりました。Catalinaのセキュリティ設定により、アプリケーションをユーザーディレクトリの直下にインストールできなくなったようです。 私はここに提案を試みましたが、以下に書きました: こんにちは、私は解決策を持っているかもしれません 再配置されたアイテムにあるanaconda3フォルダーを/ Users / myname /にコピーします オープンターミナル 次のように入力します:export PATH = '' / Users / myname / anaconda3 / bin:$ PATH " 入力:conda init zsh 動いた!幸運を! しかし、これは私にはうまくいきません。conda init zsh私が得た後: -bash:/ Users / USER / anaconda3 / bin / conda:/ anaconda3 / bin / python:bad interpreter:No such file or …
12 python  macos  conda 

7
conda環境を作成する:「競合が見つかりました!」環境を解決し、「最短の競合パスを見つける」が永久に実行されている場合
environment.ubuntu.ymlconda環境を作成するためのファイルが提供されました。ただし、実行するconda create env --file environment.ubuntu.ymlと次の出力が表示されます。 conda env create --file environment.ubuntu.yml Collecting package metadata (repodata.json): done Solving environment: - Found conflicts! Looking for incompatible packages. This can take several minutes. Press CTRL-C to abort. Examining fontconfig: 5%|▉ | 10/202 [00:00&lt;00:00, 5393.91it/ ] Comparing specs that have this dependency: 0%| | 0/12 …

3
暗号化されたPDFからのPythonデータの抽出
私は純粋な数学の最近の卒業生で、基本的なプログラミングコースをほとんど履修していません。私はインターンシップを行っており、内部データ分析プロジェクトがあります。ここ数年の内部PDFを分析する必要があります。PDFは「保護されています」。つまり、暗号化されます。PDFパスワードはありません。さらに、パスワードが存在するかどうかは不明です。しかし、これらのドキュメントはすべて揃っており、手動で読むことができます。印刷することもできます。目標は、私たちがいくつかのアイデアを持っている言語であるPythonで読むことです。 まず、いくつかのPythonライブラリでPDFを読み込もうとしました。しかし、私が見つけたPythonライブラリは暗号化されたPDFを読みません。当時は、Adobe Readerでもエクスポートできませんでした。 次に、PDFを復号化することにしました。Pythonライブラリーpykepdfを使用して成功しました。Pykepdfは非常にうまく機能します!ただし、復号化されたPDFは、前のポイントのPythonライブラリ(PyPDF2およびTabula)でも読み取ることができません。現時点では、Adobe Readerを使用して復号化されたPDFから情報をエクスポートできるため、多少の改善がありましたが、目的はすべてをPythonで行うことです。 私が示しているコードは、暗号化されていないPDFでは完全に機能しますが、暗号化されたPDFでは機能しません。pykepdfで取得した復号化されたPDFでも機能しません。 私はコードを書きませんでした。PythonライブラリPykepdfとTabulaのドキュメントで見つけました。PyPDF2ソリューションは、Al Sweigartの著書「Automate the Boring Stuff with Python」で私が強く推奨しています。また、前に説明した制限付きで、コードが正常に機能していることも確認しました。 最初の質問、プログラムが暗号化されたことのないファイルで動作する場合、なぜ復号化されたファイルを読み取れないのですか? 2番目の質問、復号化されたファイルをPythonで何らかの方法で読み取ることができますか?どのライブラリがそれを実行できるか、または不可能ですか?復号化されたPDFはすべて抽出可能ですか? あなたの時間と助けてくれてありがとう!!! これらの結果は、Python 3.7、Windows 10、Jupiter Notebooks、およびAnaconda 2019.07を使用して見つかりました。 Python import pikepdf with pikepdf.open("encrypted.pdf") as pdf: num_pages = len(pdf.pages) del pdf.pages[-1] pdf.save("decrypted.pdf") import tabula tabula.read_pdf("decrypted.pdf", stream=True) import PyPDF2 pdfFileObj=open("decrypted.pdf", "rb") pdfReader=PyPDF2.PdfFileReader(pdfFileObj) pdfReader.numPages pageObj=pdfReader.getPage(0) pageObj.extractText() Tabulaを使用すると、「出力ファイルが空です」というメッセージが表示されます。 PyPDF2では、「/ n」のみが表示されます UPDATE …

5
リストで見つかったIDをpandasデータフレームの新しい列に追加する
次のデータフレームがあるとしましょう(整数の列と整数のリストの列)... ID Found_IDs 0 12345 [15443, 15533, 3433] 1 15533 [2234, 16608, 12002, 7654] 2 6789 [43322, 876544, 36789] また、IDの個別のリスト... bad_ids = [15533, 876544, 36789, 11111] それを考慮して、df['ID']列とインデックスを無視して、bad_idsリスト内のIDのいずれかがdf['Found_IDs']列で言及されているかどうかを確認します。これまでのコードは次のとおりです。 df['bad_id'] = [c in l for c, l in zip(bad_ids, df['Found_IDs'])] これは機能しますが、bad_idsリストがデータフレームよりも長く、実際のデータセットの場合、bad_idsリストはデータフレームよりもはるかに短くなります。bad_idsリストを2つの要素のみに設定した場合... bad_ids = [15533, 876544] 私は非常に人気のあるエラーを受け取ります(同じエラーで多くの質問を読みました)... ValueError: Length of values does not …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.