ubuntu の下に MiniConda と jupyter をインストールし、対応する演習を実行します

記事ディレクトリ


序文

環境:
1. ubuntu20.0.4
2. VMware16.0


1.MiniCondaのインストール

ダウンロード アドレス: Miniconda は、
ここに画像の説明を挿入
インストール用のファイルがあるターミナルを開きます。

ここに画像の説明を挿入
次のコマンドを入力してインストールします。

bash Miniconda3-py38_23.1.0-1-Linux-x86_64.sh 

ここに画像の説明を挿入

Enter を最後までクリックし、yes と入力し、Enter を押してインストールを完了します。最後のステップで、環境を自動的に初期化するかどうかが通知されます。ここでは、yes を選択します。

  • インストールが成功したことを示すベースを前にして、新しいターミナルを作成します。
    ここに画像の説明を挿入

  • 次のコマンドで conda 環境を終了できます。

conda deactivate

2、jupyter と numpy のインストール

  • ベース環境にインストールします。
pip3 install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 次のステートメントを入力して、jupyter を起動します。
jupyter-notebook

以下をクリックしてセルを開きます。
ここに画像の説明を挿入

  • numpy を導入すると、インストールされていないことを示すエラーが報告されます。
    ここに画像の説明を挿入

  • セルに次のコマンドを入力して、numpy をインストールします。

!pip install numpy  -i https://pypi.tuna.tsinghua.edu.cn/simple

ダウンロード成功:
ここに画像の説明を挿入

3. 練習

1. numpy の 10 の基本演習

1. 長さが 10 ですべてゼロの 1 次元 ndarray オブジェクトを作成し、5 番目の要素を 1 に等しくします。

import numpy as np
s1=np.zeros(shape=10)
s1
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
s1[4]=1
s1
array([0., 0., 0., 0., 1., 0., 0., 0., 0., 0.])

2. 10 から 49 までの要素を持つ ndarray オブジェクトを作成します。

np.random.randint(10,50,size=10)
array([29, 34, 36, 38, 42, 46, 20, 10, 34, 28])
np.linspace(10,49,10)
array([10.        , 14.33333333, 18.66666667, 23.        , 27.33333333,
       31.66666667, 36.        , 40.33333333, 44.66666667, 49.        ])
a=np.arange(10,50)
a
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
       27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
       44, 45, 46, 47, 48, 49])

3. 問題 2 のすべての要素の位置を逆にする

a[::-1]
array([49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,
       32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,
       15, 14, 13, 12, 11, 10])

4. np.random.random を使用して 10*10 の ndarray オブジェクトを作成し、最大要素と最小要素を出力します

a4=np.random.random(size=(10,10))
a4
array([[0.57864122, 0.75825205, 0.671457  , 0.01652972, 0.83662473,
        0.07993135, 0.31517659, 0.57477863, 0.94565608, 0.49343344],
       [0.7051955 , 0.08854673, 0.00977959, 0.59359878, 0.83501832,
        0.59548494, 0.99590864, 0.17911834, 0.26063783, 0.06151621],
       [0.68713937, 0.29235894, 0.03071282, 0.0069819 , 0.28939325,
        0.35035552, 0.76373131, 0.70860792, 0.18704257, 0.42649714],
       [0.72537482, 0.19555892, 0.73276841, 0.48774894, 0.38532655,
        0.43165531, 0.60560044, 0.38469067, 0.41840802, 0.71391871],
       [0.74888979, 0.18545503, 0.62210795, 0.16764943, 0.47245473,
        0.73949373, 0.34973878, 0.89478131, 0.2574486 , 0.67459515],
       [0.49782418, 0.78249273, 0.00481123, 0.51504344, 0.02692346,
        0.70258034, 0.78931153, 0.06893658, 0.0275792 , 0.24421366],
       [0.21202118, 0.6368179 , 0.14432268, 0.71477657, 0.67925453,
        0.42254828, 0.20566852, 0.8844454 , 0.57986194, 0.11061856],
       [0.59480983, 0.67130815, 0.71493204, 0.46390142, 0.25450817,
        0.28102949, 0.61794472, 0.63754591, 0.04469933, 0.64122652],
       [0.68132466, 0.60579935, 0.26041903, 0.81581584, 0.41348766,
        0.28581916, 0.82335752, 0.46807092, 0.6238304 , 0.87707721],
       [0.44571048, 0.71596592, 0.5418371 , 0.40256469, 0.00684384,
        0.19073276, 0.49419077, 0.19056293, 0.91979081, 0.03392778]])
zmin,zmax=a4.min(),a4.max()
zmin,zmax
(0.004811229760691482, 0.995908637507578)

5. 10*10 ndarray オブジェクトを作成し、行列の境界はすべて 1 で、内部はすべて 0 です。

nd=np.zeros(shape=(10,10),dtype=np.int8)
nd[[0,9]]=1
nd[:,[0,9]]=1
nd
array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
       [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
       [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
       [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
       [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
       [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
       [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
       [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]], dtype=int8)
a5=np.ones((10,10))
a5
array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
a5[1:-1,1:-1]=0
a5
array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])

6. 各行が 0 から 4 までの 5*5 行列を作成します。

l=[0,1,2,3,4]
nd=np.array(l*5)
nd.reshape(5,5)
array([[0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4]])
nd6_1=np.arange(0,5,1)
nd6_1
array([0, 1, 2, 3, 4])
nd6=np.arange(0,25).reshape(5,5)
nd6
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])
nd6[0:5]=nd6_1
nd6
array([[0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4],
       [0, 1, 2, 3, 4]])

7. 範囲 (0,1) で長さ 12 の算術シーケンスを作成します。

np.linspace(0,1,12)
array([0.        , 0.09090909, 0.18181818, 0.27272727, 0.36363636,
       0.45454545, 0.54545455, 0.63636364, 0.72727273, 0.81818182,
       0.90909091, 1.        ])

8. 長さ 10 のランダムな配列を作成し、並べ替えます

a8=np.random.random(10)
a8
array([0.38322221, 0.94047054, 0.09864148, 0.19621559, 0.17850924,
       0.75333279, 0.26089512, 0.13318057, 0.07681047, 0.10118547])
np.sort(a8)
array([0.07681047, 0.09864148, 0.10118547, 0.13318057, 0.17850924,
       0.19621559, 0.26089512, 0.38322221, 0.75333279, 0.94047054])
a8.argsort()
array([8, 2, 9, 7, 4, 3, 6, 0, 5, 1])
a8[a8.argsort()]
array([0.07681047, 0.09864148, 0.10118547, 0.13318057, 0.17850924,
       0.19621559, 0.26089512, 0.38322221, 0.75333279, 0.94047054])

9. 長さ 10 のランダムな配列を作成し、最大値を 0 に置き換えます

nd=np.random.randint(0,10,size=10)
display(nd)
index_max=nd.argmax()
array([4, 5, 9, 7, 7, 1, 1, 6, 2, 3])
nd[index_max]
9
all_index_max=np.argwhere(nd==nd[index_max]).reshape(-1)
all_index_max
array([2])
nd[all_index_max]=-100
nd
array([   4,    5, -100,    7,    7,    1,    1,    6,    2,    3])

10. 5*5 行列を 3 列目に並べ替える方法

n10=np.random.randint(0,100,size=(5,5))
n10
array([[16, 21, 73, 55, 27],
       [11, 67, 51, 97, 10],
       [62, 16, 76, 14, 42],
       [71, 18, 31, 96,  3],
       [69, 82, 80, 53, 73]])
n10[:,2]
array([73, 51, 76, 31, 80])
np.argsort(n10[:,2])
array([3, 1, 0, 2, 4])
n10[np.argsort(n10[:,2])]
array([[71, 18, 31, 96,  3],
       [11, 67, 51, 97, 10],
       [16, 21, 73, 55, 27],
       [62, 16, 76, 14, 42],
       [69, 82, 80, 53, 73]])

2. Python の例のレビュー

1. フィボナッチ数列の推奨イベントを定義します。

  • コード:
import random
 
def fin_loop(n):
    listNum = []
    a,b = 0,1
    for i in range(n):
        a,b = b,a+b
        listNum.append(a)
    return listNum
 
if __name__ == "__main__":
    listPlan = ['吃零食','学习','学习','学习','看电影','学习','旅游','睡觉','学习']
    listNum = fin_loop(6)
    varIdx = random.randint(0,5)
    varRandom = listNum[varIdx]
    print("今日计划:",listPlan[varRandom])
  • 効果:
    ここに画像の説明を挿入

2.番号タイプ:

数値、文字列、およびタプルはすべて不変のデータ型です。つまり、変数の割り当てが変更されると、新しいメモリ空間が開かれます。さらに、変更可能なデータ型には、リスト、辞書、およびコレクションが含まれます。

コード

i=3
print(id(i))
i+=1
print(id(i))
  • 効果:
    ここに画像の説明を挿入

変数値を変更した後、アドレス値が異なります。

3.ストリングアクセス(フェンス)

  • コード:
str='Picture'
print(str[1:3])
print(str[-3:-1])
print(str[3:-1])
print(str[-6:7])
print(str[2:])
print(str*2)
print(str+"TEST")
  • 効果:
    ここに画像の説明を挿入

4.文字列の割り当て

文字列は不変型であるため、文字列のインデックス位置に値を代入するとエラーが発生します.文字列の内容を変更するには、新しい変数を生成する再代入のみが可能です.

  • コード:
word='Python'
print(word[0],word[5])
print(word[-1],word[-6])
word[0]='Q'
  • 効果:
    ここに画像の説明を挿入

5.リスト(リスト)型アクセス

リストは角括弧 [ ] を使用して定義され、コンマはデータ項目を区切るために使用されます。リストのデータ項目は、数値、文字列、またはリストです。リストのインターセプト構文は文字列の構文に似ていますが、リスト内の 1 つの要素を変更できます。List には、append() や pop() などの多くの組み込みメソッドもあります。

  • コード:
list=['a',56,1.13,'HelloWorld',[7,8,9]]
print(list)
print(list[4])
print(list[-2:5])
print(list[2:])
  • 効果:
    ここに画像の説明を挿入

6. リスト要素の修正

  • コード:
a=[1,2,3,4,5,6]
a[0]=9
print(a)
a.append(7)
print(a)
a[2:5]=[]
print(a)
a.pop(2)
print(a)
  • 効果:
    ここに画像の説明を挿入

7.タプル(tuple)アクセス

タプルは括弧で囲まれ、要素はコンマで区切られます. 要素は異なるデータ型を持つことができます. タプルの傍受方法は文字列やリストの場合と似ていますが, タプルの要素は変更できません. タプルの要素は不変ですが、タプル内のデータ項目が可変型の場合、データ項目を変更できます。

  • コード:
tuple=('Spiderman',2017,33.4,'Homecoming',14)
tinytuple=(16,'Marvel')
print(tuple)
print(tuple[0])
print(tuple[3:4])
print(tuple+tinytuple)
  • 効果:
    ここに画像の説明を挿入

8.タプル(tuple)の改変

  • コード:
tuple=([16,'Marvel'],'Spiderman',2017,33.4,'Homecoming',14)
print(tuple[0])
tuple[0][0]='Marvel'
tuple[0][1]='16'
print(tuple)
  • 効果:
    ここに画像の説明を挿入

タプルの最初の要素は変更可能なデータ型であるリストであるため、変更できます。

9. 辞書の使用

  • コード:
# 字典基本操作
dict = {
    
    'Name':'jiangjiang','Class':'人工智能与机器学习','Age':10}
# 字典的访问
print("Name:",dict['Name'])
print(dict)
# 添加 add
dict['Gender'] = 'male'
print(dict)
# 修改 update
dict.update({
    
    "No":"001"})
dict['Age'] ={
    
    8,9,10}
print(dict)
# 也可以使用 update 方法添加/修改多个数据
dict.update({
    
    'Gender':'Man','Id':'001'})
print(dict)
# 删除元素
del dict['Gender']
print(dict)
dict.clear()
print(dict)
  • 効果:
    ここに画像の説明を挿入

10.セット(コレクション)タイプ

  • コード:
# 集合基本操作
# 创建集合
var = set()
print(var,type(var))
var = {
    
    'LiLei','HanMeiMei','ZhangHua','LiLei','LiLei'}
print(var,type(var))     # 从输出中可以看出,集合中没有重复元素,与数学集合一致
# 集合成员检测
result = 'LiLei' in var
print(result)
result = 'jiangjiang' in var
print(result)
# 增删改查
var.add('jiangjiang')
print(var)
var.update('pl')        # 该方法首选拆分元素,然后一次添加
print(var)
var.remove('LiLei')     # 这里会删除所有一致元素
print(var)
# 集合的遍历
for item in var:       # 方法1
    print(item)
for item in enumerate(var): # 方法2
    print(item)
# 交集、并集、差集
var1 = set()
var1 = {
    
    'jiangjiang','002','003'}
jiaoji = var&var1      # 交集
print(jiaoji)
bingji = var|var1      # 并集
print(bingji)
chaji = var-var1       # 差集
print(chaji)
  • 効果:
    ここに画像の説明を挿入

3. pandas と matplotlib ライブラリの例

1・パンダ

Pandas は、強力なデータ構造を使用して、高性能のデータ操作および分析ツールを提供します。このモジュールは、データを簡単に処理できる多数の関数、メソッド、およびモデルを提供し、データを効率的に分析するために、大規模なデータ セットを操作するためのツールも含まれています。中でも Pandas が扱う主なデータ構造は、Series、DataFrame、Panel の 3 つですが、これらのデータ構造はすべて NumPy 配列の上に構築されており、動作速度が非常に高速です。

セルに次のコマンドを入力して、pandas ライブラリをダウンロードします。

!pip install pandas  -i https://pypi.tuna.tsinghua.edu.cn/simple

1. 地理的位置データのシリーズ オブジェクトを作成する

シリーズは 1 次元配列に似たオブジェクトです. データとそれに関連付けられたデータ ラベル (つまりインデックス) のセットで構成されます. データは任意の NumPy データ型 (整数, 文字列, 浮動小数点, Pythonオブジェクト待機)。

  • コード:
import pandas as pd
print('-------  列表创建Series  --------')
s1=pd.Series([1,1,1,1,1])
print(s1)
print('-------  字典创建Series  --------')
s2=pd.Series({
    
    'Longitude':39,'Latitude':116,'Temperature':23})
print('First value in s2:',s2['Longitude'])
print('------- 用序列作Series索引 --------')
s3=pd.Series([3.4,0.8,2.1,0.3,1.5],range(5,10))
print('First value in s3:',s3[5])
  • 効果:
    ここに画像の説明を挿入

2.DataFrame オブジェクト

DataFrame は、順序付けられた配列のセットを含む表形式のデータ構造です。列インデックスはテーブルのフィールド名に対応し、行インデックスはテーブルの行番号に対応し、値は 2 次元配列です。各列は独立した属性を表し、各列のデータ型は異なる場合があります。以下は、単純に DataFrame オブジェクトを作成します。

  • コード:
import pandas as pd
dict1={
    
    'col':[1,2,5,7],'col2':['a','b','c','d']}
df=pd.DataFrame(dict1)
df
  • 効果:

ここに画像の説明を挿入

3.パンダの分散

  • コード:
import numpy as np
import pandas as pd
a=np.arange(0,60,5)
a=a.reshape(3,4)
df=pd.DataFrame(a)
print(df)
print('-------------------')
print(df.std())
  • 効果:
    ここに画像の説明を挿入

2、matplotlib

Matplotlib は、Python 用の基本的な 2D 描画ライブラリです.スタイルや属性などを制御し、クロスプラットフォームの出版品質の画像を生成できる多くのパラメーターを提供します. Matplotlib を使用すると、複雑な作業が簡単になり、ヒストグラム、棒グラフ、散布図、曲線グラフなどを生成できます。Matplotlib は、Python スクリプト、Python、IPython、Jupyter Notebook、Web アプリケーション サーバーなどで使用できます。

セルに次のコマンドを入力して、matplotlib ライブラリをダウンロードします。

!pip install matplotlib  -i https://pypi.tuna.tsinghua.edu.cn/simple

1. 簡単なプロット フォームを描画する

  • コード:
import matplotlib.pyplot as plt
fig=plt.figure()
ax1=fig.add_subplot(2,2,1)
ax2=fig.add_subplot(2,2,2)
  • 効果:
    ここに画像の説明を挿入

2. シンプルな直線を複数描く

  • コード:
import matplotlib.pyplot as plt
import numpy as np
a=np.arange(10)
plt.xlabel('x')
plt.ylabel('y')
plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5)
plt.legend(['1.5x','2.5x','3.5x','4.5x'])
plt.title('simple lines')
plt.show()
  • 効果:
    ここに画像の説明を挿入

3. sin(x) 関数のイメージを描く

  • コード:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,10,100) #列举出100个数据点
y=np.sin(x)  #计算出对应的y
plt.plot(x,y,marker="o")
  • 効果:
    ここに画像の説明を挿入

**補足: **これら 2 つのライブラリをベース環境のコマンド ライン環境で pip または apt-get を使用してダウンロードすると失敗しやすく、ダウンロードが完了した後、ベース環境にインポートするときにエラーが報告される可能性がありますセルなので、上記の方法を使用することをお勧めします。

4.チューリングテストとは

チューリングテストとは、機械が人工知能を持っているかどうかを判定するテストです。
意味:

チューリング テストとは、テスターがテスト対象 (人と機械) から離れている状況を指し、いくつかのデバイス (キーボードなど) を介してランダムにテスト対象に質問をします。多くのテストで、マシンが平均的な参加者に 30% 以上の偽陽性を与えた場合、マシンはテストに合格し、人間の知能を持っていると見なされました。

進捗:

チューリング テストに合格したマシンはまだありません。つまり、コンピューターの知能は人間の知能にはほど遠いということです。自動化されたチャットボットのように。一方で、チューリングテストにはまだ問題があり、機械に「知性的な」計算能力があれば、チューリングテストに合格するまでの時間が長くなるということで、どれくらいの時間が適切かという問題も出てきます。その後の研究者が研究しています。


V. まとめ

Conda は、パッケージとその依存関係をすばやくインストール、実行、および更新できます。ということで、大きいサイズのcondaよりも小さくて使いやすいminicondaを選びました。初めてjupyterに触れたとき、このセル形式のプログラミングはまだ新鮮な試みです。Conda は、Windows、macOS、Linux で動作するオープン ソースのパッケージ管理システムおよび環境管理システムです。この勉強を通して、後で勉強するのに便利な python も少し学びました。さらに、numpy、pandas、matplotlib を使った計算の便利さを実感しました。

6.参考文献

Turing Test とは
20 numpy の演習
Jupyter Notebook の紹介、インストール、使用方法のチュートリアル

おすすめ

転載: blog.csdn.net/qq_52215423/article/details/129387783