配列の演算


配列の演算
配列の演算:要素の演算に対応して、構造は完全に同じです.
(1)四則演算:+-*/**%
import numpy as np

arr1 = np.arange(1,17).reshape((4,4))
# print(arr1)
arr2 = np.diag([2,3,1,5])  #         
# print(arr2)
arr3 = arr1 * arr2  #   
# print(arr3)
arr4 = arr2 / arr1  #           0
# print(arr4)
arr5 = arr1**arr2  #                    
# print(arr5)
arr6 = arr2%arr1  #   
# print(arr6)
[[0 0 0 0]
 [0 3 0 0]
 [0 0 1 0]
 [0 0 0 5]]
(2)比較演算<><=>=====
print(arr1 > arr2)  #        ,   True,    False
[[False  True  True  True]
 [ True  True  True  True]
 [ True  True  True  True]
 [ True  True  True  True]]
#   arr1   8    
mask = arr1 >8
print(mask)
print(arr1[mask]) #          mask       
[[False False False False]
 [False False False False]
 [ True  True  True  True]
 [ True  True  True  True]]
[0 0 1 0 0 0 0 5]
(3)論理演算ロジックと論理または演算
#      :all(    )    True  True
np.all(mask)  # False
#      :any(    )   True  True
np.any(mask)
True
(4)配列放送演算
行ベクトル(または列ベクトル)と二次元配列の各ライン(または各列)を演算します.
arr7 = np.array([[1],[0],[1],[0]])  #    
arr8 = np.array([1,0,1,0])  #    
arr9 = arr1+arr7  #             
arr10 = arr1+arr8  #             
arr11 = arr1+np.array([1])  #                
# print(arr11)
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]
 [14 15 16 17]]
(5)特殊な方法
一次元配列の並べ替え
sort:
ソートは元の配列を修正します.戻り値はありません.
# sort       ,     
arr12 = np.array([21,10,20,8,15,1])
# arr12.sort()
# print(arr12)  # [ 1  8 10 15 20 21]

argsort:
並べ替えを行います.戻り値があり、戻り値は、並べ替え前の要素のインデックスに対応します.
# argsort      ,    ,               

print(arr12.argsort())  # [5 3 1 4 2 0]           
print(arr12)
[5 3 1 4 2 0]
[21 10 20  8 15  1]
二次元配列の並べ替え:
sort:
#         sort 
#     
# axis :               axis=-1           
# kind:          
arr13 = np.array([[12,2,3,45,4],[12,34,345,567,56]])
# arr13.sort(axis=0)
# int(arr13)

argsort:
# argsort     ,          
print(arr13.argsort())
[[1 2 4 0 3]
 [0 1 4 2 3]]