1658583000
Pythonでは、ダブルスラッシュ//
演算子を使用してフロア分割を実行します。この//
演算子は、最初の数値を2番目の数値で除算し、結果を最も近い整数(または整数)に切り捨てます。
この記事では、//
演算子の使用方法を示し、通常の除算と比較して、どのように機能するかを確認します。
//
ただし、これで終わりではありません。ダブルスラッシュ演算子と同義のPython数学メソッドについても学習します。
//
ダブルスラッシュ//
演算子を使用するには、通常の除算とほぼ同じようにします。唯一の違いは、シングルスラッシュの代わりに/
ダブルスラッシュを使用することです//
。
firstNum // secondNum
以下の例では、12を5で除算すると2になります。
num1 = 12
num2 = 5
num3 = num1 // num2
print("floor division of", num1, "by", num2, "=", num3)
# Output: floor division of 12 by 5 = 2
一方、12を5で割ると、通常は2.4になります。つまり、2つの余り4:
num2 = 5
num3 = num1 / num2
print("normal division of", num1, "by", num2, "=", num3)
# Output: normal division of 12 by 5 = 2.4
これは、//
演算子が2つの数値の除算の結果を最も近い整数に切り捨てることを示しています。
小数点が9の場合でも、//
演算子は結果を最も近い整数に切り捨てます。
num1 = 29
num2 = 10
num3 = num1 / num2
num4 = num1 // num2
print("normal division of", num1, "by", num2, "=", num3)
print("but floor division of", num1, "by", num2, "=", num4)
"""
Output:
normal division of 29 by 10 = 2.9
but floor division of 29 by 10 = 2
"""
また、負の数でフロア分割を実行した場合でも、結果は切り捨てられます。
結果に備えるために、負の数を切り捨てるということは、0から離れることを意味します。したがって、-12を5で割ると-3になります。混乱しないでください。一見、ナブマーは「大きく」なっているように見えますが、実際には小さくなっています(ゼロからさらに負の数が大きくなります)。
num1 = -12
num2 = 5
num3 = num1 // num2
print("floor division of", num1, "by", num2, "=", num3)
# floor division of -12 by 5 = -3
//
演算子は次のように機能しますmath.floor()
Pythonでは、ダブルスラッシュ演算子math.floor()
と同じように、数値を最も近い整数に切り捨てます。//
だから、彼らは舞台裏で同じことをするのでmath.floor()
、オペレーターの代わりになります。//
次に例を示します。
import math
num1 = 12
num2 = 5
num3 = num1 // num2
num4 = math.floor(num1 / num2)
print("floor division of", num1, "by", num2, "=", num3)
print("math.floor of", num1, "divided by", num2, "=", num4)
"""
Output:
floor division of 12 by 5 = 2
math.floor of 12 divided by 5 = 2
"""
あなたはそれがオペレーターmath.floor()
と同じことをするのを見ることができます。//
//
演算子が舞台裏でどのように機能するか演算子を使用して//
2つの数値を除算する場合、舞台裏で呼び出されるメソッドは__floordiv__()
です。
演算子__floordiv__()
の代わりにこのメソッドを直接使用することもできます。//
num1 = 12
num2 = 5
num3 = num1 // num2
num4 = num1.__floordiv__(num2)
print("floor division of", num1, "by", num2, "=", num3)
print("using the floordiv method gets us the same value of", num4)
"""
Output:
floor division of 12 by 5 = 2
using the floordiv method gets us the same value of 2
"""
//
この記事では、ダブルスラッシュ演算子の使用方法と、それが舞台裏でどのように機能するかを学習しました。
//
さらに、演算子の2つの選択肢math.floor()
と方法について学びました__floordiv__()
。
どちらを使用するかについて混乱しないでください。フロア分割を実行できる3つの方法は、同じように機能します。ただし、入力が少なくなるため、ダブルスラッシュ//
演算子を使用することをお勧めします。
読んでくれてありがとう。
出典:https ://www.freecodecamp.org/news/what-does-double-slash-mean-in-python/
1658583000
Pythonでは、ダブルスラッシュ//
演算子を使用してフロア分割を実行します。この//
演算子は、最初の数値を2番目の数値で除算し、結果を最も近い整数(または整数)に切り捨てます。
この記事では、//
演算子の使用方法を示し、通常の除算と比較して、どのように機能するかを確認します。
//
ただし、これで終わりではありません。ダブルスラッシュ演算子と同義のPython数学メソッドについても学習します。
//
ダブルスラッシュ//
演算子を使用するには、通常の除算とほぼ同じようにします。唯一の違いは、シングルスラッシュの代わりに/
ダブルスラッシュを使用することです//
。
firstNum // secondNum
以下の例では、12を5で除算すると2になります。
num1 = 12
num2 = 5
num3 = num1 // num2
print("floor division of", num1, "by", num2, "=", num3)
# Output: floor division of 12 by 5 = 2
一方、12を5で割ると、通常は2.4になります。つまり、2つの余り4:
num2 = 5
num3 = num1 / num2
print("normal division of", num1, "by", num2, "=", num3)
# Output: normal division of 12 by 5 = 2.4
これは、//
演算子が2つの数値の除算の結果を最も近い整数に切り捨てることを示しています。
小数点が9の場合でも、//
演算子は結果を最も近い整数に切り捨てます。
num1 = 29
num2 = 10
num3 = num1 / num2
num4 = num1 // num2
print("normal division of", num1, "by", num2, "=", num3)
print("but floor division of", num1, "by", num2, "=", num4)
"""
Output:
normal division of 29 by 10 = 2.9
but floor division of 29 by 10 = 2
"""
また、負の数でフロア分割を実行した場合でも、結果は切り捨てられます。
結果に備えるために、負の数を切り捨てるということは、0から離れることを意味します。したがって、-12を5で割ると-3になります。混乱しないでください。一見、ナブマーは「大きく」なっているように見えますが、実際には小さくなっています(ゼロからさらに負の数が大きくなります)。
num1 = -12
num2 = 5
num3 = num1 // num2
print("floor division of", num1, "by", num2, "=", num3)
# floor division of -12 by 5 = -3
//
演算子は次のように機能しますmath.floor()
Pythonでは、ダブルスラッシュ演算子math.floor()
と同じように、数値を最も近い整数に切り捨てます。//
だから、彼らは舞台裏で同じことをするのでmath.floor()
、オペレーターの代わりになります。//
次に例を示します。
import math
num1 = 12
num2 = 5
num3 = num1 // num2
num4 = math.floor(num1 / num2)
print("floor division of", num1, "by", num2, "=", num3)
print("math.floor of", num1, "divided by", num2, "=", num4)
"""
Output:
floor division of 12 by 5 = 2
math.floor of 12 divided by 5 = 2
"""
あなたはそれがオペレーターmath.floor()
と同じことをするのを見ることができます。//
//
演算子が舞台裏でどのように機能するか演算子を使用して//
2つの数値を除算する場合、舞台裏で呼び出されるメソッドは__floordiv__()
です。
演算子__floordiv__()
の代わりにこのメソッドを直接使用することもできます。//
num1 = 12
num2 = 5
num3 = num1 // num2
num4 = num1.__floordiv__(num2)
print("floor division of", num1, "by", num2, "=", num3)
print("using the floordiv method gets us the same value of", num4)
"""
Output:
floor division of 12 by 5 = 2
using the floordiv method gets us the same value of 2
"""
//
この記事では、ダブルスラッシュ演算子の使用方法と、それが舞台裏でどのように機能するかを学習しました。
//
さらに、演算子の2つの選択肢math.floor()
と方法について学びました__floordiv__()
。
どちらを使用するかについて混乱しないでください。フロア分割を実行できる3つの方法は、同じように機能します。ただし、入力が少なくなるため、ダブルスラッシュ//
演算子を使用することをお勧めします。
読んでくれてありがとう。
出典:https ://www.freecodecamp.org/news/what-does-double-slash-mean-in-python/
1635937200
Unicode文字列は、選択したエンコードにプレーン文字列でエンコードできます。Python Unicode文字は、Pythonの長整数に類似した、文字を保持するのに十分な大きさの抽象オブジェクトです。文字列にASCII文字のみが含まれている場合は、str() 関数を使用して文字列に変換します。
data = u"xyzw"
app = str(data)
print(app)
xyzw
Unicode文字列があり、これをファイルまたはその他のシリアル化された形式に書き込む必要がある場合は、最初に、保存可能な特定の表現にエンコードする必要があります。
UTF-16(ほとんどのUnicode文字に2バイトを使用)やUTF-8(文字に応じて1〜4バイト/コードポイントを使用)など、多くの一般的なUnicodeエンコーディングがあります。
その文字列を特定のエンコーディングに変換するには、次のコードを使用できます。
data = u'£21'
app = data.encode('UTF-8')
print(app)
new = data.encode('UTF-16')
print(new)
b'\xc2\xa321'
b'\xff\xfe\xa3\x002\x001\x00'
したがって、出力はバイト単位で取得されました。
バイトを文字列に変換するには、decode()関数を使用します。
data = u'£21'
app = data.encode('UTF-8')
print(app.decode())
new = data.encode('UTF-16')
print(new.decode('UTF-16'))
£21
£21
元の文字列を取得したことがわかります。
Python Unicodeを文字列に変換するには、unicodedata.normalize()関数を使用します。Unicode標準は、正規の同等性と互換性の同等性に基づいて、Unicode文字列のさまざまな正規化形式を定義します。
各文字には、2つの正規形があります。
正規形D(NFD)は正規分解とも呼ばれ、各文字を分解された形式に変換します。正規形C(NFC)は、最初に正規分解を適用し、次に事前に結合された文字を再度構成します。
unicodedata.normalize(form, unistr)
正規形KD(NFKD)は、互換性分解を適用します。たとえば、すべての互換性文字を同等の文字に置き換えます。正規形KC(NFKC)は、最初に互換性分解を適用し、次に正規の構成を適用します。
2つのUnicode文字列が正規化されていて、人間の読者には同じように見える場合でも、1つに結合文字があり、結合文字がない場合、それらは等しく比較されない可能性があります。
import unicodedata
title = u"André skräms inför på fédéral électoral Verhältnismäßigkeit"
nData = unicodedata.normalize('NFKD', title).encode('ASCII', 'ignore')
print(nData)
b'Andre skrams infor pa federal electoral Verhaltnismaigkeit'
出力で、エンコードされたバイト文字列を取得し、文字列decode()関数を使用してPython文字列を取得するためにデコードできることがわかります。
import unicodedata
title = u"André skräms inför på fédéral électoral Verhältnismäßigkeit"
nData = unicodedata.normalize('NFKD', title).encode('ASCII', 'ignore')
print(nData.decode())
Andre skrams infor pa federal electoral Verhaltnismaigkeit
ご覧のとおり、出力にプレーンな文字列が含まれています。そのため、Pythonでユニフォームを文字列に完全に変換しました。このPythonUnicodeから文字列へのチュートリアルは以上です。
リンク: https://appdividend.com/2020/12/15/how-to-convert-python-unicode-to-string/
1648142820
この記事では、Pythonでの使用法といくつかの例*args
について説明します。**kwargs
関数を作成するとき、関数に値を渡す必要があることがよくあります。これらの値は関数の引数と呼ばれます。
Pythonで2つの数値を加算する関数を定義しましょう。次のように記述します。
def add(x, y):
return x+y
print(add(2,3))
出力:
5
3つの数字を追加する必要がある場合はどうなりますか?簡単です。3つの引数を受け入れ、それらの合計を次のように返すように関数を変更できます。
def add(x, y, z):
return x+y+z
print(add(2, 3, 5))
出力:
10
とても簡単ではありませんか?そうでした!
しかし、2つの数字だけを追加する必要がある場合はどうなりますか?変更した関数は合計を取得するのに役立ちますか?どれどれ:
def add(x, y, z):
return x+y+z
print(add(2, 3))
出力:
Traceback (most recent call last):
File "D:\Quarantine\Test\Blog-Codes\args-kwargs\main.py", line 14, in <module>
print(add(2, 3))
TypeError: add() missing 1 required positional argument: 'z'
問題がわかりますか?
問題は、引数の数が可変である場合に発生します。正確な数の引数を受け入れるように関数を変更し続ける必要がありますか?もちろんそうではありませんが、これは行いません。
したがって、それを行うには他の方法が必要です。ここ*args
に**kwargs
ジャンプします。
関数に渡す引数の数がわからない場合は、関数の引数としてandを使用できます。 *args**kwargs
*args
可変数の非キーワード引数をPython関数に渡すことができます。関数では、パラメーター名の前にアスタリスク(*
)を使用して、可変数の引数を渡す必要があります。
def add(*args):
print(args, type(args))
add(2, 3)
出力:
(2, 3) <class 'tuple'>
したがって、これらの渡された引数は、を除くパラメーターと同じ名前で関数内にタプルを作成することを確信しています*
。
add()
それでは、可変数の引数を使用して関数を書き直してみましょう。
def add(*numbers):
total = 0
for num in numbers:
total += num
return total
print(add(2, 3))
print(add(2, 3, 5))
print(add(2, 3, 5, 7))
print(add(2, 3, 5, 7, 9))
出力:
5
10
17
26
引数の名前は必ずしもそうである必要はないことに注意してくださいargs
–それは何でもかまいません。この場合はnumbers
です。しかし、それは一般的に*args
名前として使用する標準的な方法です。
**kwargs
可変数のキーワード引数をPython関数に渡すことができます。この関数では、パラメーター名の前に二重アスタリスク(**
)を使用して、このタイプの引数を示します。
def total_fruits(**kwargs):
print(kwargs, type(kwargs))
total_fruits(banana=5, mango=7, apple=8)
出力:
{'banana': 5, 'mango': 7, 'apple': 8} <class 'dict'>
したがって、この場合の引数はディクショナリとして渡され、これらの引数は、を除くパラメータと同じ名前で関数内にディクショナリを作成することがわかります**
。
total_fruits()
それでは、果物の総数を返す関数を完成させましょう。
def total_fruits(**fruits):
total = 0
for amount in fruits.values():
total += amount
return total
print(total_fruits(banana=5, mango=7, apple=8))
print(total_fruits(banana=5, mango=7, apple=8, oranges=10))
print(total_fruits(banana=5, mango=7))
出力:
20
30
12
引数の名前は必ずしもそうである必要はないことに注意してくださいkwargs
–繰り返しますが、それは何でもかまいません。この場合、それはfruits
です。しかし、それは一般的に**kwargs
名前として使用する標準的な方法です。
*args
この記事では、Pythonの2つの特別なキーワード–と。について学びまし**kwargs
た。これらはPython関数を柔軟にするため、それぞれ可変数の引数とキーワード引数を受け入れることができます。
読んでくれてありがとう!
ソース:https ://www.freecodecamp.org/news/args-and-kwargs-in-python/
1638000300
行列を乗算する方法は正確に2つあります。
この例では、numpy matmul()メソッドを使用したnumpy配列を使用した行列の乗算を確認します。それでは、その方法を詳しく見ていきましょう。
Pythonで2つの配列を乗算するには、np.matmul()メソッドを使用します。np.matmul()メソッドは、2つの配列の行列積を見つけるために使用されます。numpy matmul()関数は、引数としてarr1とarr2を取り、入力配列の行列積を返します。
2D行列の場合、通常の行列積が返されます。提供された行列の次元が2より大きい場合、最後の2つのインデックスにある行列のスタックとして扱われ、それに応じてブロードキャストされます。
2つの配列のいずれかが1次元の場合、その次元に1を追加することにより、マトリックスに昇格します。行列の乗算が実行された後、追加された1が削除されます。
numpy.matmul(arr1, arr2, out=None)
matmul()関数は、最大で3つのパラメーターを取ります。
arr1:array_like、最初の入力配列
arr2: array_like、2番目の入力配列
out:ndarray、これはオプションのパラメータです。
これは、出力を格納する必要があるn次元配列です。arr1の形状が(m、k)で、arr2の形状が(k、n)であるとします。それらは(m、n)の形状でなければなりません。このパラメーターが指定されていないか、Noneの場合、新しく割り当てられた配列が返されます。
matmul()メソッドは、入力配列の行列積を返します。スカラーは、arr1とarr2の両方が1次元ベクトルである場合にのみ生成されます。
次のコードを参照してください。
# importing the numpy module
import numpy as np
# first 2-D array arr1
arr1 = np.array([[2, 4], [6, 8]])
print("first array is :")
print(arr1)
print("Shape of first array is: ", arr1.shape)
# second 2-D array arr1
arr2 = np.array([[1, 3], [5, 7]])
print("second array is :")
print(arr2)
print("Shape of second array is: ", arr2.shape)
# calculating matrix product
res = np.matmul(arr1, arr2)
print("Resultant array is :")
print(res)
print("Shape of resultant array is: ", res.shape)
first array is :
[[2 4]
[6 8]]
Shape of first array is: (2, 2)
second array is :
[[1 3]
[5 7]]
Shape of second array is: (2, 2)
Resultant array is :
[[22 34]
[46 74]]
Shape of resultant array is: (2, 2)
上記のプログラムでは、arr1とarr2という名前の2つの2次元入力配列を使用しました。我々は 両方の配列の行列積を表示することで出力を表示しています。結果の配列も(2,2)の形状になります。
より深く理解するために、製品は次のように表示できます。
次のコードを参照してください。
# importing the numpy module
import numpy as np
# first 2-D array arr1
arr1 = np.array([[3, 0], [0, 4]])
print("first array is :")
print(arr1)
print("Shape of first array is: ", arr1.shape)
# second 2-D array arr1
arr2 = np.array([1, 2])
print("second array is :")
print(arr2)
print("Shape of second array is: ", arr2.shape)
# calculating matrix product
res = np.matmul(arr1, arr2)
print("Resultant array is :")
print(res)
print("Shape of resultant array is: ", res.shape)
first array is :
[[3 0]
[0 4]]
Shape of first array is: (2, 2)
second array is :
[1 2]
Shape of second array is: (2,)
Resultant array is :
[3 8]
Shape of resultant array is: (2,)
上記のプログラムでは、arr1という名前の2次元入力配列と、arr2という名前の別の1次元ベクトルを取得しました。次に、両方の配列の行列積を表示して出力を表示しました。結果の配列も(2、)の形状になります。
より深く理解する製品については、次のように理解できます。
arr2は1次元のベクトルであるため、1を追加することで行列に昇格し、[[11]、[2,1]]のように表示できます。ここで、変換行列の積が通常どおり計算され、結果が[[3,3]、[8、4]]として取得された後、追加された列は再び削除されます。したがって、最終結果は[3,8]の形状(2、)になります。
最後に、PythonチュートリアルのNumpy matmul()メソッドは終了しました。
リンク:https://appdividend.com/2020/06/03/numpy-matmul-method-in-python/
1636165620
Python numpy.linalg.cholesky()は、コレスキー分解値を取得するために使用されます。コレスキー分解とは何かを理解しましょう。正方行列aのL * LHがある場合、Lは下三角で、.Hは共役転置演算子(通常の転置値)であり、エルミート(実数値の場合は対称)であり、明確に定義されている必要があります。Lのみが返されます。
コレスキー分解は、次のような高速な結果を得るために使用されることがあります。
Ax = b、ここでAはエルミート/対称および正定値の両方です)。
まず、yを解きます
Ly = b
そして、
L.Hx = y
numpy.linalg.cholesky(arr)
np cholesky()関数は、指定されたエルミート(すべての要素が実数の場合は対称)、正定値の入力行列の1つのパラメーターのみを取ります。
コレスキー()関数が返すの上側または下三角コレスキー因子。場合は行列オブジェクトを返しマトリックスオブジェクトです。分解が失敗した場合、指定された行列は正定値ではありません。この関数はLinAlgErrorエラーを返します。
# Finding Cholesky value
import numpy as np
# Declaring the first array
arr1 = np.array([[2.+0.j, -0.-3.j], [0.+3.j, 5.+0.j]])
print("Original array is :\n", arr1)
# Calculating and printing cholesky value
L = np.linalg.cholesky(arr1)
print("Cholesky value is:\n", L)
# Verifying the output
v_val = np.dot(L, L.T.conj())
print("Verified value is:\n", v_val)
Original array is :
[[ 2.+0.j -0.-3.j]
[ 0.+3.j 5.+0.j]]
Cholesky value is:
[[1.41421356+0.j 0. +0.j ]
[0. +2.12132034j 0.70710678+0.j ]]
Verified value is:
[[2.+0.j 0.-3.j]
[0.+3.j 5.+0.j]]
この例では、最初にnumpy配列を作成しましたが、これは後で印刷されます。次に、numpy.linalg.cholesky()値を呼び出して出力しました。上で説明したように、次にコレスキープロパティがL * LH = Arrayであることを確認しました。
したがって、検証された値は元のnumpy配列と同じであることがわかります。
入力が配列または行列の場合、コレスキー値を見つけることができます。
# Finding Cholesky value when input is an array_like or matrix :
import numpy as np
# Declaring the first array
arr1 = np.array([[2, (-0-3j)], [3j, 5]])
print("Original array is :\n", arr1)
# Calculating and printing Cholesky value
L = np.linalg.cholesky(arr1)
print("Cholesky value1 is:\n", L)
M = np.linalg.cholesky(np.matrix(arr1))
print("Cholesky value2 is:\n", M)
# Verifying the output
v_val1 = np.dot(L, L.T.conj())
print("Verified value1 is:\n", v_val1)
v_val2 = np.dot(M, M.T.conj())
print("Verified value2 is:\n", v_val1)
Original array is :
[[2.+0.j 0.-3.j]
[0.+3.j 5.+0.j]]
Cholesky value1 is:
[[1.41421356+0.j 0. +0.j ]
[0. +2.12132034j 0.70710678+0.j ]]
Cholesky value2 is:
[[1.41421356+0.j 0. +0.j ]
[0. +2.12132034j 0.70710678+0.j ]]
Verified value1 is:
[[2.+0.j 0.-3.j]
[0.+3.j 5.+0.j]]
Verified value2 is:
[[2.+0.j 0.-3.j]
[0.+3.j 5.+0.j]]
この例では、最初に後で印刷される配列を作成しました。
次に、指定された配列が配列のようなオブジェクトと行列である場合のコレスキー値を計算しました。上で説明したように、次にコレスキープロパティがL * LH = Arrayであることを確認しました。
したがって、検証された値は元のnumpy配列と同じであることがわかります。ただし、ここでは、最初のans1は配列オブジェクト型であり、arr2はマトリックスオブジェクト型であり、返されました。
Pythonのnumpylinalg cholesky()関数については以上です。
リンク: https://appdividend.com/2020/11/09/numpy-linalg-cholesky/