# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# + [markdown] colab_type="text" id="P6xk2_jLsvFF"
# # [作業目標]
#
# 1. 請比較對一個 100 x 100 * 100 的陣列，使用不同方法對每一個元素 +1 的時間比較。
#
# 2. 如何從一個陣列中，找出出現頻率最高的數值與位置？
#
# 3. 如何利用 list(...) 實現 a.tolist() 的效果？試著用程式實作。
#

# + [markdown] colab_type="text" id="uXGll28asvFS"
# # 作業 
# -

# ### 1. 請比較對一個 1000 x 100 x 100 的陣列，使用不同方法對每一個元素 +1 的時間比較。
#
#
#

# +
# 記得先 Import 正確的套件

import numpy as np

# + colab={} colab_type="code" id="5QrYoyNWsvFS"
Z = np.random.randint(0, 10, 1000000).reshape(100, 100, 100)
# -

# %timeit -n 10 a = 2
Z = Z+1
#直接+1

# +
# %timeit -n 10 a = 2

Z2 = []

for i in Z.flat:
    Z2.append(i+1)
Z2 = np.array(Z2).reshape(100,100,100)
#用flat攤平

# +
# %timeit -n 10 a = 2

Z3 = []

for i in np.nditer (Z, order = 'C'):
    Z3.append(i+1)
Z3 = np.array(Z3, dtype = int).reshape(100,100,100)
#用nditer
# -

# ### 2. 如何從一個陣列中，找出出現頻率最高的數值與位置？
#

# + colab={} colab_type="code" id="e1gVI0tvsvFY"

Z = np.random.randint(0,10,50)
print(Z)


# +
uni,count = np.unique(Z, return_counts = True)
print(uni,count, sep='\n')

print('頻率最高的數值:',uni[np.argmax(count)])
print('頻率最高的數值的次數:',max(count))


# -

print('頻率最高的數值的位置:',np.where(Z==uni[np.argmax(count)])[0])
#np.where()[0] 表示行索引，np.where()[1]表示列索引

# ### 3. 如何利用 list(...) 實現 a.tolist() 的效果？試著用程式實作。
#

# +
a = np.random.randint(10, size=6) 

print(a.tolist())
print(list(a))


b = np.random.randint(10, size=(3,4)) 

print(b.tolist())
print(list(b))


c = np.random.randint(10, size=(2,3,2)) 

print(c.tolist())
print(list(c))


# +
'a'
print(list(a))

b_list=[]
for i in b:
    b_list.append(list(i))
    print(b_list)

c_all_list=[]
for i in range(c.shape[0]):
    c_list=[]
    for j in range(c.shape[1]):
        c_list.append(list(c[i][j]))
    c_all_list.append(c_list)

print(c_all_list)
# -



StarcoderdataJupyterScriptsDedupFiltered