<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>「ファンシーインデックス」タグの記事一覧Python Tech</title>
	<atom:link href="https://tech.nkhn37.net/tag/%e3%83%95%e3%82%a1%e3%83%b3%e3%82%b7%e3%83%bc%e3%82%a4%e3%83%b3%e3%83%87%e3%83%83%e3%82%af%e3%82%b9/feed/" rel="self" type="application/rss+xml" />
	<link>https://tech.nkhn37.net</link>
	<description>Python学習サイト</description>
	<lastBuildDate>Sun, 11 Jan 2026 21:02:36 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://tech.nkhn37.net/wp-content/uploads/2021/01/cropped-lion-normal-clear-1-32x32.png</url>
	<title>「ファンシーインデックス」タグの記事一覧Python Tech</title>
	<link>https://tech.nkhn37.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【numpy】ファンシーインデックス（Fancy Indexing）の基本</title>
		<link>https://tech.nkhn37.net/numpy-fancy-indexing-basic/</link>
					<comments>https://tech.nkhn37.net/numpy-fancy-indexing-basic/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Thu, 03 Feb 2022 00:00:00 +0000</pubDate>
				<category><![CDATA[NumPy]]></category>
		<category><![CDATA[fancy indexing]]></category>
		<category><![CDATA[ファンシーインデックス]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=2403</guid>

					<description><![CDATA[numpyの配列の要素を指定するためのファンシーインデックス（Fancy Indexing）について基本を解説します。 ファンシーインデックス（Fancy Indexing） 一般的な要素の指定方法 numpyの配列（n [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">numpyの配列の要素を指定するための<span class="marker"><strong>ファンシーインデックス（Fancy Indexing）</strong></span>について基本を解説します。</p>



<h2 class="wp-block-heading jinr-heading d--bold" id="ファンシーインデックス-fancy-indexing">ファンシーインデックス（Fancy Indexing）</h2>



<h3 class="wp-block-heading jinr-heading d--bold" id="一般的な要素の指定方法">一般的な要素の指定方法</h3>



<p class="wp-block-paragraph">numpyの配列（ndarray）で一般的に要素にアクセスする場合には、「要素位置を指定する」「スライスにより範囲を指定する」「条件式で一致するものを取り出す」といった方法があります。</p>



<p class="wp-block-paragraph">簡単な例でおさらいしておきましょう。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np

temp = np.arange(10) * 10
print(f'temp = {temp}')

# 要素にアクセスする方法
# 位置を指定
print(f'temp[9] = {temp[9]}')
# スライスによるアクセス
print(f'temp[5:] = {temp[5:]}')
# ブール値のマスクによるアクセス
print(f'temp >= 70 : {temp >= 70}')
print(f'temp[temp >= 70] = {temp[temp >= 70]}')</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
temp = [ 0 10 20 30 40 50 60 70 80 90]
temp[9] = 90
temp[5:] = [50 60 70 80 90]
temp >= 70 : [False False False False False False False  True  True  True]
temp[temp >= 70] = [70 80 90]</pre>



<p class="wp-block-paragraph">要素位置を指定する場合には、temp[9]のように要素位置を指定することで、その位置の値を取得することができます。</p>



<p class="wp-block-paragraph">スライスにより範囲を指定する場合には、temp[5:]のように対象となる範囲を指定します。この場合は5以降の要素を全て取り出すという意味です。</p>



<p class="wp-block-paragraph">条件式に一致するものを取り出す場合には、temp[temp &gt;= 7]のように条件となる式を指定します。この場合、実態としてtemp &gt;= 7はbool型の配列になっていて、Trueとなっている要素が抽出されることになります。</p>



<p class="wp-block-paragraph">上記をイメージ図にしてみると以下のようになります。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img fetchpriority="high" decoding="async" width="1024" height="619" src="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-1024x619.png" alt="numpy 配列 要素 アクセス" class="wp-image-2436" srcset="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-1024x619.png 1024w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-300x181.png 300w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-768x464.png 768w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image.png 1212w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">numpyには、<span class="marker"><strong>ファンシーインデックス（Fancy Indexing）</strong></span>と呼ばれている要素へのアクセス方法があります。</p>



<p class="wp-block-paragraph">本記事では、このファンシーインデックスについて基本的な内容を紹介していきます。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">配列の参照方法に関する方法については以下も参考にしてください。</p>



<ul class="wp-block-list jinr-list">
<li><a href="https://tech.nkhn37.net/numpy-ndarray-access/" target="_blank" rel="noreferrer noopener">配列（ndarray）の要素を参照する方法</a></li>



<li><a href="https://tech.nkhn37.net/numpy-ndarray-list-slice-difference/" target="_blank" rel="noreferrer noopener">「NumPy配列（ndarray）のスライス」と「Python組み込みのlistのスライス」の違い</a></li>
</ul>
</div>
		</div></section>



<h3 class="wp-block-heading jinr-heading d--bold" id="ファンシーインデックスによる指定方法の基本">ファンシーインデックスによる指定方法の基本</h3>



<p class="wp-block-paragraph"><span class="marker"><strong>ファンシーインデックス（Fancy Indexing）とは、インデックスを指定する配列を渡すことで対象となる要素を取り出す方法</strong></span>です。</p>



<p class="wp-block-paragraph">言葉だけだとよく分からないと思いますので、以降で具体的な例を見ながら確認していきましょう。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="配列からインデックス配列で指定した位置の値を取り出す">配列からインデックス配列で指定した位置の値を取り出す</h4>



<p class="wp-block-paragraph">1次元配列から指定位置の要素を取り出す例を紹介します。また、取り出す際に要素の並び順を変更します。以下の例で見ていきましょう。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np

temp = np.arange(10) * 10
print(f'temp = {temp}')

# index用リストを作成
ind = [1, 7, 5]
print(f'ind = {ind}')
print(f'temp[ind] = {temp[ind]}')</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
temp = [ 0 10 20 30 40 50 60 70 80 90]
ind = [1, 7, 5]
temp[ind] = [10 70 50]</pre>



<p class="wp-block-paragraph">この例では、0から90までの要素の配列tempから要素を抽出します。index用のリストindは取り出す位置を決めている配列です。</p>



<p class="wp-block-paragraph">ここで注目してほしいのがindの中身は[1, 7, 5]というように<span class="marker"><strong>任意の順番を指定している</strong></span>という点です。これにより取得される要素は[10 70 50]のように順番が入れ替わっていることが分かります。</p>



<p class="wp-block-paragraph">上記をイメージ図にしてみると以下のようになります。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="974" height="535" src="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-2.png" alt="numpy ファンシーインデックス Fancy Indexing" class="wp-image-2440" srcset="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-2.png 974w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-2-300x165.png 300w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-2-768x422.png 768w" sizes="(max-width: 974px) 100vw, 974px" /></figure>
</div>


<p class="wp-block-paragraph">このように要素を順番を変更しつつ取り出したいときにはファンシーインデックスの考え方を利用できます。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="インデックス配列の形状にして値を取り出す">インデックス配列の形状にして値を取り出す</h4>



<p class="wp-block-paragraph">1次元の配列から要素を取り出して2次元配列を作成する例を紹介します。この例では、インデックス配列の形状に合わせた値の取り出しができることが理解できます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np

temp = np.arange(10) * 10
print(f'temp = {temp}')

# 2次元のindexリストを作成し1次元のデータから配列を作成
ind = np.array([[1, 5], [9, 2]])
print(f'ind = \n{ind}')
print(f'temp[ind] = \n{temp[ind]}')</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
temp = [ 0 10 20 30 40 50 60 70 80 90]
ind = 
[[1 5]
 [9 2]]
temp[ind] = 
[[10 50]
 [90 20]]</pre>



<p class="wp-block-paragraph">上記の例を見てもらえば分かる通り、元のtempという配列は1次元データです。</p>



<p class="wp-block-paragraph">インデックス用の配列としてindという配列を2次元配列にし、元の1次元配列から取り出したい要素位置を指定しています。その結果、元は1次元配列の要素から2次元配列を取り出せています。</p>



<p class="wp-block-paragraph">上記をイメージ図にしてみると以下のようになります。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="1011" height="626" src="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-3.png" alt="numpy ファンシーインデックス Fancy Indexing" class="wp-image-2441" srcset="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-3.png 1011w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-3-300x186.png 300w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-3-768x476.png 768w" sizes="(max-width: 1011px) 100vw, 1011px" /></figure>
</div>


<p class="wp-block-paragraph">このように元のデータからデータ形状を変えつつ取り出す際にもファンシーインデックスの考え方が利用できます。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="各次元の要素位置を指定して値を取り出す">各次元の要素位置を指定して値を取り出す</h4>



<p class="wp-block-paragraph">配列の各次元の要素位置を指定して値を取り出す方法を紹介します。以下の例で見てみましょう。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np

temp = np.arange(15).reshape((5, 3))
print(f'temp = \n{temp}')

# 行を指定するインデックス
row_ind = np.array([0, 2, 4])
print(f'row_ind = {row_ind}')
# 列を指定するインデックス
col_ind = np.array([2, 0, 1])
print(f'col_ind = {col_ind}')

# (0, 2), (2, 0), (4, 1)の位置の値を取得して配列を作成していることになる
print(f'temp[row_ind, col_ind] = {temp[row_ind, col_ind]}')</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
temp = 
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]
row_ind = [0 2 4]
col_ind = [2 0 1]
temp[row_ind, col_ind] = [ 2  6 13]</pre>



<p class="wp-block-paragraph">この例では、2次元配列から行方向、列方向のそれぞれの位置を指定して値を取り出しています。</p>



<p class="wp-block-paragraph">row_indは行方向で取得する位置、col_indは列方向で取得する位置を指定しています。具体的には(0,2)、(2,0)、(4,1)の値を取りだすと指定していることになります。</p>



<p class="wp-block-paragraph">上記をイメージ図にしてみると以下のようになります。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="354" src="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-4-1024x354.png" alt="numpy ファンシーインデックス Fancy Indexing" class="wp-image-2443" srcset="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-4-1024x354.png 1024w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-4-300x104.png 300w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-4-768x265.png 768w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-4.png 1483w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h4 class="wp-block-heading jinr-heading d--bold" id="配列の部分的な値を取り出す">配列の部分的な値を取り出す</h4>



<p class="wp-block-paragraph">前述の例は、元の配列の各位置の値を取り出すような抽出（2次元→1次元）の例でした。今度は、元の配列の次元のまま部分的に値を取り出す方法を紹介します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np

temp = np.arange(15).reshape((5, 3))
print(f'temp = \n{temp}')

# 行を指定するインデックス
row_ind = np.array([0, 2, 4])[:, np.newaxis]
print(f'row_ind = \n{row_ind}')
# 列を指定するインデックス
col_ind = np.array([2, 0])
print(f'col_ind = {col_ind}')

# 0, 2, 4行目から、2, 0列目の値を取り出す
print(f'temp[row_ind, col_ind] = \n{temp[row_ind, col_ind]}')</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
temp = 
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]
row_ind = 
[[0]
 [2]
 [4]]
col_ind = [2 0]
temp[row_ind, col_ind] = 
[[ 2  0]
 [ 8  6]
 [14 12]]</pre>



<p class="wp-block-paragraph">この例では、行を指定するインデックスの配列をnp.newaxisによって軸を追加しています。具体的にはもともとrow_ind.shape = (3, )であったものを、row_ind.shape= (3, 1)にしていることになります。</p>



<p class="wp-block-paragraph">このようにすることで、元の2次元を保ちつつ必要な行、列の値を抽出しています。この例の特徴的なところは、指定行の要素を取り出しつつ、列の順序を変えているところです。</p>



<p class="wp-block-paragraph">実際numpyを使って分析をする場面では、行は各データ、列は属性として扱うことが多いです。この例で実施してるのは特定のデータ番号を取り出しつつ、属性を自分の見たい順に並び替えていることと同じです。</p>



<p class="wp-block-paragraph">上記をイメージ図にしてみると以下のようになります。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="410" src="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-5-1024x410.png" alt="numpy ファンシーインデックス Fancy Indexing" class="wp-image-2444" srcset="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-5-1024x410.png 1024w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-5-300x120.png 300w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-5-768x308.png 768w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-5.png 1473w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h4 class="wp-block-heading jinr-heading d--bold" id="配列をマスキングをする">配列をマスキングをする</h4>



<p class="wp-block-paragraph">分析を行うときには、複数行の任意列だけデータを取得したいようなケースがあります。このような場合には、bool型のリストを使うと簡単に取得できます。</p>



<p class="wp-block-paragraph">以下の例で見てみましょう。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np

temp = np.arange(15).reshape((5, 3))
print(f'temp = \n{temp}')

# 行を指定して任意の列をマスキングして取得する
row_ind = np.array([0, 2, 4])[:, np.newaxis]
col_mask = np.array([1, 0, 1], dtype=bool)
print(f'temp[row_ind, col_mask] = \n{temp[row_ind, col_mask]}')</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
temp = 
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]
temp[row_ind, col_mask] = 
[[ 0  2]
 [ 6  8]
 [12 14]]</pre>



<p class="wp-block-paragraph">この例では、col_maskで取り出すべき位置をbool型の配列として指定しています。具体的には0列目と2列目を取り出せるように指定しています。</p>



<p class="wp-block-paragraph">このようにすることで、元の配列の一部をマスキングしたような配列を作り出すことが可能です。今回は、row_indは番号順のようになっていますが、行の順番を変えたかったら数字の順番を変えればもちろん順序を変えることができます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="449" src="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-6-1024x449.png" alt="numpy ファンシーインデックス Fancy Indexing" class="wp-image-2445" srcset="https://tech.nkhn37.net/wp-content/uploads/2022/02/image-6-1024x449.png 1024w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-6-300x132.png 300w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-6-768x337.png 768w, https://tech.nkhn37.net/wp-content/uploads/2022/02/image-6.png 1478w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">この例では、列の順番はそのままの順で取り出されることになります。「マスキング」と書いた通り、一部の対象をマスクしているような使い方です。もし列の順番もを変えたいような場合は、前述の列インデックス位置を指定する方法を使用するようにしてください。</p>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/numpy-fancy-indexing-basic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【NumPy】配列（ndarray）の要素を参照する方法</title>
		<link>https://tech.nkhn37.net/numpy-ndarray-access/</link>
					<comments>https://tech.nkhn37.net/numpy-ndarray-access/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Mon, 15 Nov 2021 00:00:00 +0000</pubDate>
				<category><![CDATA[NumPy]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[fancy indexing]]></category>
		<category><![CDATA[ndarray]]></category>
		<category><![CDATA[slice]]></category>
		<category><![CDATA[ファンシーインデックス]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=2024</guid>

					<description><![CDATA[NumPy の配列（ndarray）の要素を参照する方法を解説します。 配列（ndarray）要素の参照方法 NumPy 配列（ndarray）の要素へのアクセスは、Python のリスト要素にアクセスする方法と同じで、 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><span class="jinr-d--text-color d--marker1 d--bold">NumPy の配列（<code>ndarray</code>）の要素を参照する方法</span>を解説します。</p>



<h2 class="wp-block-heading jinr-heading d--bold" id="配列-ndarray-要素の参照方法">配列（<code>ndarray</code>）要素の参照方法</h2>



<p class="wp-block-paragraph">NumPy 配列（<code>ndarray</code>）の要素へのアクセスは、Python のリスト要素にアクセスする方法と同じで、角括弧（<code>[]</code>）でアクセスをすることができます。</p>



<p class="wp-block-paragraph">この記事では、<span class="jinr-d--text-color d--marker1 d--bold">NumPy の配列（<code>ndarray</code>）の要素を参照する方法</span>を紹介します。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="単一の要素を参照する方法">単一の要素を参照する方法</h3>



<p class="wp-block-paragraph">配列の単一要素にアクセスするには、角括弧（<code>[]</code>）で要素位置を指定して参照します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np

data = np.arange(10)
print(f'data: {data}')

# 単一の要素にアクセスする（インデックスは0が開始なので注意）
print(f'data[0] = {data[0]}')
print(f'data[5] = {data[5]}')
print(f'data[9] = {data[9]}')</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
data: [0 1 2 3 4 5 6 7 8 9]
data[0] = 0
data[5] = 5
data[9] = 9</pre>



<p class="wp-block-paragraph">例では、<code>arange</code> 関数でサイズが 10 の配列を作成して要素を参照しています。インデックスの数字は 0 から開始することに注意しましょう。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="スライスで配列の一部を取り出す方法">スライスで配列の一部を取り出す方法</h3>



<p class="wp-block-paragraph">配列の一部を取り出したい場合には、スライスを使用することで抽出することができます。1 次元配列と 2 次元配列のそれぞれで例を見てみましょう。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="1次元配列の場合">1 次元配列の場合</h4>



<p class="wp-block-paragraph">1 次元配列においてスライスで一部を取り出すには、以下のようにします。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np

data = np.arange(10)
print(f'data: {data}')

# スライスで要素の一部を取り出す
print('\nスライスで要素の一部を取り出す')
print(f'data[2:8] = {data[2:8]}')
print(f'data[5:] = {data[5:]}')
print(f'data[:5] = {data[:5]}')

# stepを指定して値を取り出す
print('\nstepを指定して一定間隔で値を取り出す')
print(f'data[0:5:2] = {data[0:5:2]}')
print(f'data[::2] = {data[::2]}')

# 逆順で配列を取り出す
print('\n逆順で配列を取り出す')
print(f'data[::-1] = {data[::-1]}')</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
data: [0 1 2 3 4 5 6 7 8 9]

スライスで要素の一部を取り出す
data[2:8] = [2 3 4 5 6 7]
data[5:] = [5 6 7 8 9]
data[:5] = [0 1 2 3 4]

stepを指定して一定間隔で値を取り出す
data[0:5:2] = [0 2 4]
data[::2] = [0 2 4 6 8]

逆順で配列を取り出す
data[::-1] = [9 8 7 6 5 4 3 2 1 0]</pre>



<p class="wp-block-paragraph">スライスでは、<code>[start:stop:step]</code> というような記載方法を用います。<code>start</code> 番目から <code>stop-1</code> 番目までを <code>step</code> 刻みで取り出すということを意味します。最後は、<code>stop-1</code> 番目のインデックスとなるため注意してください。なお、<code>start</code>、<code>stop</code>、<code>step</code> の各項目は省略が可能です。</p>



<p class="wp-block-paragraph">例での <code>data[2:8]</code> では、2 番目の要素から 7 番目の要素までになります。また、マイナスの <code>step</code> を指定することもでき、<code>data[::-1]</code> のようにすると逆順の配列を取得することができます。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="2次元配列の場合">2 次元配列の場合</h4>



<p class="wp-block-paragraph">2 次元配列の場合も参照方法は、1 次元の場合と変わりません。以下のように、各次元ごとそれぞれで対象範囲を指定します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np

data = np.arange(25).reshape((5, 5))
print(f'data: \n{data}')

# 部分配列を取り出す
print('\n部分配列を取り出す')
print(f'data[:2, :2] = \n{data[:2, :2]}')
print(f'data[3:, 3:] = \n{data[3:, 3:]}')

# stepを指定して部分配列を取り出す
print('\nstepを指定して部分配列を取り出す')
print(f'data[::2, ::2] = \n{data[::2, ::2]}')</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
data: 
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]

部分配列を取り出す
data[:2, :2] = 
[[0 1]
 [5 6]]
data[3:, 3:] = 
[[18 19]
 [23 24]]

stepを指定して部分配列を取り出す
data[::2, ::2] = 
[[ 0  2  4]
 [10 12 14]
 [20 22 24]]</pre>



<p class="wp-block-paragraph">例では、5 × 5 の配列を作成し、部分配列を取り出しています。なお、1 次元配列、2 次元配列で例を見ましたが、3 次元以上の n 次元配列となっても考え方は同じです。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="行や列を取り出す場合">行や列を取り出す場合</h4>



<p class="wp-block-paragraph">スライスの考え方を用いると、行や列を抽出することができます。データ分析では一般的に行にサンプル、列に属性といった形でデータを用意するので、行や列について個別に取り出せるようにすることは重要です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import numpy as np

data = np.arange(25).reshape((5, 5))
print(data)

# 行を取り出す
print('\n行を取り出す')
print(f'data[0, :] = {data[0, :]}')
print(f'data[0] = {data[0]}')

# 列を取り出す
print('\n列を取り出す')
print(f'data[:, 0] = {data[:, 0]}')</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]

行を取り出す
data[0, :] = [0 1 2 3 4]
data[0] = [0 1 2 3 4]

列を取り出す
data[:, 0] = [ 0  5 10 15 20]</pre>



<p class="wp-block-paragraph">行を取り出したいときには <code>data[0, :]</code> のように列方向のインデックスを「<code>:</code>」とします。「<code>:</code>」はすべての要素を意味するので <code>data[0, :]</code> は 0 行目のすべての値を取り出すことを意味します。複数行取り出したい場合は、<code>data[0:2, :]</code> のようにすれば複数行取り出せます。</p>



<p class="wp-block-paragraph">なお、<code>data[0]</code> のように列方向の要素を記載しない場合は、<code>data[0, :]</code> と同じ結果になります。</p>



<p class="wp-block-paragraph">列を取り出したい場合も考え方は同様です。<code>data[:, 0]</code> とすると、0 列目のすべての値を取り出すことができます。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="配列-ndarray-のスライスはビューであるので注意">配列（<code>ndarray</code>）のスライスはビューであるので注意</h4>



<p class="wp-block-paragraph"><code>ndarray</code> のスライスで取得できる変数は元の配列のビューであるため、値を変更すると元の配列の値も変わります。</p>



<p class="wp-block-paragraph">元の配列を変更したくない場合は、配列の <span class="jinr-d--text-color d--marker1 d--bold"><code>copy</code></span> メソッドを使用してコピーを作成してください。Python のリスト (<code>list</code>) のスライスは、コピーであることから違いがあるため混同しないようにしましょう。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph"><code>ndarray</code> と <code>list</code> のスライスの考え方の違いは「<a href="https://tech.nkhn37.net/numpy-ndarray-list-slice-difference/" target="_blank" rel="noreferrer noopener">「NumPy配列（ndarray）のスライス」と「Python組み込みのlistのスライス」の違い</a>」を参考にしてください。</p>
</div>
		</div></section>



<h3 class="wp-block-heading jinr-heading d--bold" id="その他のアクセス方法-ファンシーインデックス-fancy-indexing">その他のアクセス方法：<br>ファンシーインデックス（Fancy Indexing）</h3>



<p class="wp-block-paragraph">その他の要素へのアクセス方法として、NumPy で特徴的な方法として、<span class="jinr-d--text-color d--marker1 d--bold">ファンシーインデックス（Fancy Indexing）</span>というアクセス方法があります。</p>



<p class="wp-block-paragraph">ファンシーインデックスでは、「インデックスを指定する配列」を渡すことで対象となる要素を取り出すことができて非常に便利です。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">ファンシーインデックスについては「<a href="https://tech.nkhn37.net/numpy-fancy-indexing-basic/" target="_blank" rel="noreferrer noopener">ファンシーインデックス（Fancy Indexing）の基本</a>」で詳しくまとめていますので、参考にしてください。</p>
</div>
		</div></section>



<h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p class="wp-block-paragraph"><span class="jinr-d--text-color d--marker1 d--bold">NumPy の配列（<code>ndarray</code>）の要素を参照する方法</span>を解説しました。</p>



<p class="wp-block-paragraph"><code>ndarray</code> は、Python 組み込みの <code>list</code> のように <code>[]</code> を使用して各要素にアクセスしたり、スライスを使って部分を取り出したりすることができます。ただし、<code>ndarray</code> のスライスはビューとなり、<code>list</code> とは異なる点には注意しましょう。</p>



<p class="wp-block-paragraph">配列の要素に適切にアクセスできるようになることは、データ分析の基本です。しっかりと使い方を理解するようにしましょう。</p>



<section class="wp-block-jinr-blocks-simplebox b--jinr-block-container"><div class="b--jinr-block b--jinr-box d--heading-box8  "><div class="a--simple-box-title d--bold">ソースコード</div><div class="c--simple-box-inner">
<p class="wp-block-paragraph">上記で紹介しているソースコードについては <a href="https://github.com/nkhn37/python-tech-sample-source/tree/main/python-data-analysis/numpy/ndarray-access-basic" target="_blank" rel="noreferrer noopener">GitHub</a> にて公開しています。参考にしていただければと思います。</p>
</div></div></section>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/numpy-ndarray-access/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: tech.nkhn37.net @ 2026-06-21 23:59:10 by W3 Total Cache
-->