Python配列の基本的な演算子

算術
math = np.array([98,83,86,92,67,82])
english = np.array([68,74,66,82,75,89])
chinese = np.array([92,83,76,85,87,77])
tot_symbol = math+english+chinese
tot_fun = np.add(np.add(math,english),chinese)
print('符号加法:\n',tot_symbol)
print('函数加法:\n',tot_fun)

# 除法运算
height = np.array([165,177,158,169,173])
weight = np.array([62,73,59,72,80])
BMI_symbol = weight/(height/100)**2
BMI_fun = np.divide(weight,np.divide(height,100)**2)
print('符号除法:\n',BMI_symbol)
print('函数除法:\n',BMI_fun)

4つの算術演算の記号は「+、-、*、/」であり、対応するnumpyモジュール関数はnp.add、np.subtract、np.multiply、およびnp.divideです。この関数は2つのオブジェクトの操作のみを受け入れることができることに注意してください。複数のオブジェクトの操作が必要な場合は、上記のようにネストされたメソッドを使用する必要があります。配列とスカラー間の操作を除いて、操作される配列が同じ形状であることをすべての人が確認する必要があります。

arr7 = np.array([[1,2,10],[10,8,3],[7,6,5]])
arr8 = np.array([[2,2,2],[3,3,3],[4,4,4]])
print('数组arr7:\n',arr7)
print('数组arr8:\n',arr8)
# 求余数
print('计算余数:\n',arr7 % arr8)
# 求整除
print('计算整除:\n',arr7 // arr8)
# 求指数
print('计算指数:\n',arr7 ** arr8)

上記の演算は剰余、除数、整数です。関数np.fmod、np.modf、np.powerをそれぞれ使用できますが、整数関数の適用は少し複雑になるため、npと記述する必要があります。 .modf(arr7 / arr8)[1]、その中で、modfは値の小数部分と整数部分を返すことができ、整数部分は取得される整数値です。

比較演算
np.greater(arr1,arr2) #>
np.greater_equal(arr1,arr2) #>=
np.less(arr1,arr2) #<
np.less_equal(arr1,arr2) #<=
np.equal(arr1,arr2) #== 等于
np.not_equal(arr1,arr2) #!= 不等于

例は次のとおりです。

# 取子集
# 从arr7中取出arr7大于arr8的所有元素
print(arr7)
print('满足条件的二维数组元素获取:\n',arr7[arr7>arr8])
# 从arr9中取出大于10的元素
arr9 = np.array([3,10,23,7,16,9,17,22,4,8,15])
print('满足条件的一维数组元素获取:\n',arr9[arr9>10])

# 判断操作
# 将arr7中大于7的元素改成5,其余的不变
print('二维数组的条件操作:\n',np.where(arr7>7,5,arr7))
# 将arr9中大于10 的元素改为1,否则改为0
print('一维数组的条件操作:\n',np.where(arr9>10,1,0))

比較演算子は、bool型の値、つまりtrueとfalseを返すことができます。bool indexを使用して、配列から条件を満たす要素を選択しますが、それが1次元配列であるか多次元配列であるかにかかわらず、boolindexによって返されるものはすべて1次元配列です。np.where関数は同じです。 Excelのif関数として、判断条件に従って、さまざまな分岐を作成します。

ブロードキャストコンピューティング

配列の形状が異なる場合に使用するのに適していますが、配列のブロードキャスト機能はルールに基づいており、満たされない場合はエラーが報告されます。ルールは次のとおりです。1。各入力配列の次元は等しくない場合がありますが、右から左への対応する次元値は等しくなければなりません。
2.対応する次元の値が等しくない場合は、そのうちの1つが1であることを確認する必要があります
。3。各入力配列は、最も長い形状の配列と位置合わせされ、形状の不十分な部分は1を追加することで埋められます。フロントへ。

# 各输入数组维度一致,对应维度值相等
arr10 = np.arange(12).reshape(3,4)
arr11 = np.arange(101,113).reshape(3,4)
print('3×4的二维矩阵运算:\n',arr10 + arr11)
# 各输入数组维度不一致,对应维度值相等
arr12 = np.arange(60).reshape(5,4,3)
arr10 = np.arange(12).reshape(4,3)
print('维数不一致,但末尾的维度值一致:\n',arr12 + arr10)
# 各输入数组维度不一致,对应维度值不相等,但其中有一个为1
arr12 = np.arange(60).reshape(5,4,3)
arr13 = np.arange(4).reshape(4,1)
print('维数不一致,维度值也不一致,但维度值至少一个为1:\n',arr12 + arr13)
# 加1补齐
arr14 = np.array([5,15,25])
print('arr14的维度自动补齐为(1,3):\n',arr10 + arr14)

おすすめ

転載: blog.csdn.net/m0_46445293/article/details/115029165