forループを使用せずにオブジェクトのnp.arrayの特定の属性に1D numpy配列をコピーできますか? "DIST" 配列でobjarray内のすべてのPlotInputGridDataオブジェクトの "割合" の特性を満たすために、私はこのようなものを使用します。オブジェクトのnp.arrayの特定の属性にフラットな配列をコピーする
import numpy as np
class PlotInputGridData(object):
def __init__(self):
self.rangemin = 0
self.rangemax = 0
self.rangelabel = ''
self.percentage = 0
self.number = 0
objarray = np.arange(6, dtype=PlotInputGridData)
for i in range(objarray.size):
t = PlotInputGridData()
objarray[i] = t
dist = np.array([52, 26, 12, 6, 3, 1], dtype=np.int)
for i in range(dist.size):
objarray[i].percentage = dist[i]
を私は
- objarrayを行う必要があります[0] .percentage = DIST [0]
- objarray [1] .percentage = DIST [1]
- ...など
がオンdist []をobjarray []にコピーする方法は、最後の2行でforループを使わずに、より簡潔な方法でパーセンテージをコピーする方法がありますか?
オブジェクト配列は、表形式のデータを表し、あなたが定義したクラスは、行を表している場合、あなたがより良いだろうPandas DataFrameでオフにできます。これにより、これらのループのない操作(おそらく他に必要なもの)を実行できます。 – YXD
ありがとうYXD、それは良い提案です。私はパンダがこれをもっと簡単にすることができると認識していますが、numpyだけを使って解決策があるかどうかを知りたいと思います。 –
'def __pow __(self、x):self.percentage = x'のようないくつかの演算をPlotInputGridDataに定義し、後で' objarray ** dist'と言うこともできますが、ループと比較してスピードアップはありません。私は正しい方法がウォーレンWeckessers答えに表示されると思います – dnalow