pythonにおけるリストメタグループ辞書セットの違い


リストメタグループ辞書セットの違いはpython面接で最もよく見られる問題です.この問題は基礎的ですが、面接者の基礎レベルを反映しているのは確かです.
(1)リスト
リストとは?リストは私たちが日常生活でよく見かけるリストだと思います.例えば、過去1週間に私たちが買ったものを統計して、これらのものをリストにします.私たちは1つのものを1回以上買う可能性があるので、リストには重複項目が許可されています.もし私たちがリストの範囲を拡大して、私たちの過去1週間のすべての費用状況を統計すれば、これもリストですが、このリストには買い物が費用であり、水道代も費用であり、これらのタイプは異なることができます.pythonのリストはリストと同じで、繰り返し可能で、タイプが異なるのが特徴です.タイプが違うのも配列の最も本質的な違いです.pythonのリストは[]で表されます.
  lst = ['arwen',123]   print lst[0]    print lst[1]
  lst[0] = 'weiwen'
リストにアイテムを追加するには、appendとextendの2つの方法があります.appendは
次のようになります.
(2)タプル
メタグループとリストは構造的に何の違いもありません.唯一の違いは、メタグループが読み取り専用で、変更できないことです.メタグループは「()」で表され、次のようになります.
  tup = ('arwen',123)   print tup[0]   print tup[1]
(3)集合は我々数学学の集合であり,特別な定義はない.集合の最良の応用は重み付けである.コレクションには特別な表現方法はありません.set関数を使用して、次のようなコレクションに変換されます.
  lst = [ 1, 1, 0]
  lst_set = set( lst )  #lst_setは1,0
  tup = (2, 2, 1)
  tup_set = set( tup) # tup_setは2,1
  for item in lst_set:
    print item
(4)最後は辞書です.ディクショナリには、次のようなキー値ペアのデータが格納されます.
  1:a,2:b,3:c
辞書の一番外側は括弧で、各グループはコロンでつながっていて、各グループはカンマで区切られています.
辞書の最大の価値は、クエリー、キー、値の検索です.
numpyにカプセル化されたarrayは強力な機能を持ち、同じデータ型が格納されています
Numpy matricesは2次元でなければならないがnumpy arrays(ndarrays)は多次元(1 D,2 D,3 D・・・ND)であってもよい.MatrixはArrayの小さな分岐であり、Arrayに含まれる.だからmatrixはarrayのすべての特性を持っています.
numpyにおけるmatrixの主な利点は,比較的簡単な乗算シンボルである.例えば、aとbは2つのmatricesであり、a*bはマトリクス積である.
import numpy as np

a=np.mat('4 3; 2 1')
b=np.mat('1 2; 3 4')
print(a)
# [[4 3]
#  [2 1]]
print(b)
# [[1 2]
#  [3 4]]
print(a*b)
# [[13 20]
#  [ 5  8]]

matrixおよびarrayは、objectsの後に.Tを加えることによって、その回転を得ることができる.しかしmatrix objectsは、後に.H fを加えて共役行列を得ることもでき、.Iを加えて逆行列を得ることもできる.
逆にnumpyではarraysが要素ごとの演算に従うため、array:cとdのc*d演算はmatlabのc.*d演算に相当する.
c=np.array([[4, 3], [2, 1]])
d=np.array([[1, 2], [3, 4]])
print(c*d)
# [[4 6]
#  [6 4]]

マトリクスを乗算するにはnumpyのdotコマンドが必要です.
print(np.dot(c,d))
# [[13 20]
#  [ 5  8]]
**演算子の役割も異なります.
print(a**2)
# [[22 15]
#  [10  7]]
print(c**2)
# [[16  9]
#  [ 4  1]]

aはmatrixであるため,a**2はa*aを返し,行列乗算に相当する.cはarrayで、c**2は、c中の要素が1つずつ平方を求めることに相当します.
問題が出てきました.もしプログラムの中にmatrixもarrayもあれば、頭が大きくなります.しかしarrayだけを使うと、matrixのすべての機能を実現するだけでなく、プログラミングや読書の面倒を減らすことができます.
もちろん、np.asmatrixnp.asarrayの2つのコマンドで簡単に変換できます.
私にとってnumpyのarrayとnumpyのmatrix,matlabのmatrixの最大の違いは,帰約演算を行うとarrayの次元数が変化するが,matrixは常に2次元に保たれることである.例えば以下に平均値を求める演算
>>> m = np.mat([[1,2],[2,3]])
>>> m
matrix([[1, 2],
        [2, 3]])
>>> mm = m.mean(1)
>>> mm
matrix([[ 1.5],
        [ 2.5]])
>>> mm.shape
(2, 1)
>>> m - mm
matrix([[-0.5,  0.5],
        [-0.5,  0.5]])

arrayにとって
>>> a = np.array([[1,2],[2,3]])
>>> a
array([[1, 2],
       [2, 3]])
>>> am = a.mean(1)
>>> am.shape
(2,)
>>> am
array([ 1.5,  2.5])
>>> a - am #wrong
array([[-0.5, -0.5],
       [ 0.5,  0.5]])
>>> a - am[:, np.newaxis]  #right
array([[-0.5,  0.5],
       [-0.5,  0.5]])