ndarrayにおける演算子
ndarrayクラスは演算子がオーバーロードされているため、「+」や「-」を用いての演算は独自の挙動を示します。
ndarrayの要素は数値である必要があり、文字列などではエラーが発生します。
# -*- coding: utf-8 -*- import numpy # 文字列はエラー print numpy.array(['AB']) + numpy.array(['CD'])
ndarray同士の比較は、それぞれの結果を格納したndarrayが返されます。次の例の場合「1」と「2」の比較結果として「False」、「10」と「20」で「False」、「100」と「100」で「True」となります。
# -*- coding: utf-8 -*- import numpy array_like_1 = [1, 10, 100] array_like_2 = [2, 20, 100] na_1 = numpy.array(array_like_1) na_2 = numpy.array(array_like_2) result = na_1 == na_2 print type(result) print result
--実行結果--
<type 'numpy.ndarray'> [False False True]
またndarrayとPython標準のシーケンスとの比較も可能です。戻り値はndarrayです。
# -*- coding: utf-8 -*- import numpy array_like_1 = [1, 10, 100] array_like_2 = [2, 20, 100] na_1 = numpy.array(array_like_1) na_2 = numpy.array(array_like_2) print na_1 == array_like_1 print na_1 == array_like_2
--実行結果--
[ True True True] [False False True]
「==」以外の比較結果は以下の通りです。それぞれに格納されている数値の比較を行い、その結果が格納されたndarrayが返ります。
# -*- coding: utf-8 -*- import numpy array_like_1 = [1, 10, 100] array_like_2 = [2, 20, 100] na_1 = numpy.array(array_like_1) na_2 = numpy.array(array_like_2) print na_1 != na_2 print na_1 < na_2 print na_1 <= na_2 print na_1 > na_2 print na_1 >= na_2
--実行結果--
[ True True False] [ True True False] [ True True True] [False False False] [False False True]
これらの結果をまとめて判定したい場合は、Numpyのallやanyを使うと良いでしょう。
# -*- coding: utf-8 -*-
import numpy
array_like_1 = [1, 10, 100]
array_like_2 = [2, 20, 100]
na_1 = numpy.array(array_like_1)
na_2 = numpy.array(array_like_2)
if numpy.all(na_1 == na_2):
print 'all'
else:
print 'not all'
--実行結果--
not all
ndarray同士で「+」や「-」を用いた場合、それぞれの計算結果を格納したndarrayが返されます。次の例の場合「1」と「2」の計算結果として「3」、「10」と「20」で「30」、「100」と「100」で「200」となります。
# -*- coding: utf-8 -*- import numpy array_like_1 = [1, 10, 100] array_like_2 = [2, 20, 100] na_1 = numpy.array(array_like_1) na_2 = numpy.array(array_like_2) print na_1 + na_2
--実行結果--
[ 3 30 200]
比較と同様に、ndarrayとPython標準のシーケンスとの計算も可能です。戻り値はndarrayです。
# -*- coding: utf-8 -*- import numpy array_like_1 = [1, 10, 100] array_like_2 = [2, 20, 100] na_1 = numpy.array(array_like_1) na_2 = numpy.array(array_like_2) print na_1 + array_like_1 print na_1 + array_like_2
--実行結果--
[ 2 20 200] [ 3 30 200]
「+」以外の計算結果は以下の通りです。それぞれに格納されている数値の計算を行い、その結果が格納されたndarrayが返ります。
# -*- coding: utf-8 -*- import numpy array_like_1 = [1, 10, 100] array_like_2 = [2, 20, 100] na_1 = numpy.array(array_like_1) na_2 = numpy.array(array_like_2) print na_2 - na_1 print na_2 * na_1 print na_2 / na_1 print na_2 // na_1 print na_2 % na_1 print na_2 << na_1 print na_2 >> na_1 print na_2 & na_1 print na_2 | na_1 print na_2 ^ na_1
--実行結果--
[ 1 10 0] [ 2 200 10000] [2 2 1] [2 2 1] [0 0 0] [ 4 20480 1600] [1 0 6] [ 0 0 100] [ 3 30 100] [ 3 30 0]
累算代入もサポートしています。
# -*- coding: utf-8 -*- import numpy array_like_1 = [1, 10, 100] array_like_2 = [2, 20, 100] na_1 = numpy.array(array_like_1) na_2 = numpy.array(array_like_2) na_1 += na_2 print na_1 na_1 -= na_2 print na_1 na_1 *= na_2 print na_1 na_1 /= na_2 print na_1 na_1 //= na_2 print na_1 na_1 %= na_2 print na_1 na_1 <<= na_2 print na_1 na_1 >>= na_2 print na_1 na_1 &= na_2 print na_1 na_1 |= na_2 print na_1 na_1 ^= na_2 print na_1
--実行結果--
[ 3 30 200] [ 1 10 100] [ 2 200 10000] [ 1 10 100] [0 0 1] [0 0 1] [ 0 0 16] [0 0 1] [0 0 0] [ 2 20 100] [0 0 0]
単項演算子は以下の通りです。
# -*- coding: utf-8 -*- import numpy array_like_1 = [1, 10, 100] array_like_2 = [-2, -20, -100] na_1 = numpy.array(array_like_1) na_2 = numpy.array(array_like_2) print +na_1 print -na_1 print -na_2 print ~na_2
--実行結果--
[ 1 10 100] [ -1 -10 -100] [ 2 20 100] [ 1 19 99] [ 1 10 100]
|
|
|
|
|
|
|
|
||
|
| |||
|
|
|
||
既存配列の複製を作る!
