2017-02-25 3 views
1

こんにちは:)私は最近Pythonの初心者です。最近、numpyで作業を始めました。基本的にはnd配列を持っています。data.shape = {55000, 784}はfloat32値で埋められています。私が作った条件に基づいて、特定の行とその列を新しい配列に追加したいのですが、その形式化が同じままであることが重要です。例えば私はdata[5][0-784]を空の配列に追加したいと思います。空想的な索引付けと呼ばれることについて聞いたことがありますが、それを使用する方法がまだ分かりませんでした。私は皆さんからのあらゆる助けに感謝します! - Greets多次元配列から選択した値を新しい配列に追加する

+0

「空の配列に追加する」ことは忘れてしまいます。焦点は行と列の選択にあるべきであり、好ましくは一つの行為である。選択条件について詳しく説明する必要があるかもしれません。 – hpaulj

答えて

1

Indexingのドキュメントをスキミングすることをおすすめします。しかし、ここにデモンストレーションする例があります。

import numpy as np 

data = np.array([[0, 1, 2], [3, 4, 5]]) 
print(data.shape) 
(2, 3) 

print(data) 
[[0 1 2] 
[3 4 5]] 

selection = data[1, 1:3] 
print(selection) 
[4 5] 

ファンシーインデックスは、整数配列を使用したインデックス作成を可能にする高度なインデックス機能です。ここに例があります。

fancy_selection = data[[0, 1], [0, 2]] 
print(fancy_selection) 
[0 5] 

また、追加について質問したので、Append a NumPy array to a NumPy arrayをご覧ください。とにかく例があります。

data_two = np.array([[6, 7, 8]]) 
appended_array = np.concatenate((data, data_two)) 
print(appended_array) 
[[0 1 2] 
[3 4 5] 
[6 7 8]] 
+0

あなたの助けをありがとう、非常に有用な例と私は私の問題を解決することができました:)ご挨拶! –

0

@hpauljは、コメントに配列に追加することを推奨していますが、これは避けてください。あなたの例に戻りましょうが、数字を少し小さくしてみましょう。

a[2, :] # or a[2] or a 2[, ...] 
# array([ 3.1, 3.2, 3.3]) 

又はカラム:全体行選択

a[1,2] 
# 2.3 

a = np.sum(np.ogrid[1:5, 0.1:0.39:0.1]) 
a 
# array([[ 1.1, 1.2, 1.3], 
#  [ 2.1, 2.2, 2.3], 
#  [ 3.1, 3.2, 3.3], 
#  [ 4.1, 4.2, 4.3]]) 
a.shape 
# (4, 3) 

要素選択

a[:, 1] # or a[..., 1] 
# array([ 1.2, 2.2, 3.2, 4.2]) 

空想索引付けを、最初の指標ではないことを確認スライスではなく、リストまたはarレイ:

a[[3,0,0,1], :] # or a[[3,0,0,1]] 
# array([[ 4.1, 4.2, 4.3], 
#  [ 1.1, 1.2, 1.3], 
#  [ 1.1, 1.2, 1.3], 
#  [ 2.1, 2.2, 2.3]]) 

ファンシーインデックスは、あなたがそうのような2×2×2の配列を作ることができ、たとえば、任意の要素を選択し、新しい形状にそれらを組み立てるために複数の軸上で使用することができます。

a[ [[[0,1], [1,2]], [[3,3], [3,2]]], [[[2,1], [1,1]], [[2,1], [0,0]]] ] 
# array([[[ 1.3, 2.2], 
#   [ 2.2, 3.2]], 
# 
#  [[ 4.3, 4.2], 
#   [ 4.1, 3.1]]]) 

も論理的な存在でありますインデックス

mask = np.isclose(a%1.1, 1.0) 
mask 
# array([[False, False, False], 
#  [ True, False, False], 
#  [False, True, False], 
#  [False, False, True]], dtype=bool) 
a[mask] 
# array([ 2.1, 3.2, 4.3]) 

は、アレイの組み合わせリストにそれらを収集し、使用するにはconcatenate

np.concatenate([a[1:, :2], a[:0:-1, [2,0]]], axis=1) 
# array([[ 2.1, 2.2, 4.3, 4.1], 
#  [ 3.1, 3.2, 3.3, 3.1], 
#  [ 4.1, 4.2, 2.3, 2.1]]) 

ご希望をお寄せください。