numpy配列の最後から2番目の行にインデックスを付けたいのですが、常に新しい行を追加するループがあります。
arr2= is an array formatted like so [[300 240 22 22]]
したがって、上記の例では、x = 300 y = 240 w = 22 h = 22
これらの数値は、wmが2つの数値になるまで方程式で処理されるため、[200、300]とhmも2つの数値[200、300]を持ち、両方ともNONになります。 -arrの最後にSTOPが追加されました(新しい配列を作成するのではなく、単一の配列に追加します。したがって、常に新しい行を追加するようになります(実際に新しい行を追加するのか、古い行をオーバーライドするのかはわかりません)値):
----row [[301.77325 225.71806][366.08594 232.20958]]
----row [[301.54193 225.93848][365.76663 232.37358]]
---- [[300.9011 225.27153][365.21063 231.52242]]second to last appended
row
---- [[300.63205 223.20387][364.91928 229.46263]]last appended row
then there would be another row being appended this is just a snapshot
コード:
arr=[] #shape is (0,)
for (x, y, w, h) in arr2:
wm=int(x + (w/2))
hm=int(y + (h/2))
arr.append([wm, hm])
simplified version:
arr=[]
for (x, w) in arr2:
wm=int(x + (w/2))
arr.append([wm])
単純化されていないコードは、dtype:float32の形状(2,2)の配列を生成します。
column (wm) column(hm)
| |
| |
[[293.51373 323.4329 ] # second to last row
[247.77493 316.02783]]
[[292.9887 322.23425]
[247.24142 314.2921 ]]
これらは私が試したインデックス作成方法のいくつかの例です(配列と一緒に)(これらは配列の最後に追加された2つの行です):
arr [[255.44836 280.92575] # I want to index this line-second to last appended row
[298.6107 285.75986]]
arr[-1] [298.6107 285.75986]
arr[-2] [255.44836 280.92575]
arr[-2][0] 255.44836
arr[:,0] [255.44836 298.6107 ]
arr[-1,:] [298.6107 285.75986]
arr[-2,0] 255.44836
arr[-2::2] [255.44836 280.92575]
arr [[255.35194 281.08353] # along with this line-last appended row
[298.45673 285.88693]]
arr[-1] [298.45673 285.88693]
arr[-2] [255.35194 281.08353]
arr[-2][0] 255.35194
arr[:,0] [255.35194 298.45673]
arr[-1,:] [298.45673 285.88693]
arr[-2,0] 255.35194
arr[-2::2] [255.35194 281.08353]
また、最後から2番目の行にインデックスを付けようとすると、軸エラーが表示されます。これは問題である可能性があります(追加すると、インデックスを付けようとしている新しい行が追加されず、古い値が上書きされます)。知りません。そこで、追加方法をconcatenate、vstack、pandasに切り替えようとしました。しかし、それは役に立ちませんでした。私がしたいのは、wm要素の2番目の列(例では280.92575-281.08353)から最後から2番目から最後に追加された行の違いを見つけることです。また、wm要素の最初の列(255.44836-255.35194)でも同じです。 )。さまざまなインデックス作成方法のすべてが、最後から2番目の行をフェッチしているわけではなく、最後の行だけをフェッチしています。最後から2番目の行に別の方法でインデックスを付ける別の方法があるかどうか、またはまだ試したことのない他のインデックス方法があるかどうかをお知らせください。それでもコツをつかんで混乱している場合は申し訳ありません。混乱を解消することができます。前もって感謝します!
リストの最後の項目にインデックスを付ける場合は、
arr[-1]
最後から2番目のアイテムのインデックスを作成する場合
arr[-2]
ただし、配列が十分に長いことを確認してください。配列にアイテムが1つしかない場合、最後から2番目のアイテムにインデックスを付けると、エラーが発生します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加