numpy中reindex函式用法

2021-10-17 11:20:55 字數 4328 閱讀 8558

import numpy as np

import pandas as pd

from pandas import series, dataframe

np.random.seed(666)

# series reindex

s1 = series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])

print(s1)

'''a 1

b 2

c 3

d 4

dtype: int64

'''# 重新指定 index, 多出來的index,可以使用fill_value 填充

print(s1.reindex(index=['a', 'b', 'c', 'd', 'e'], fill_value = 10))

'''a 1

b 2

c 3

d 4

e 10

dtype: int64

'''s2 = series(['a', 'b', 'c'], index = [1, 5, 10])

print(s2)

'''1 a

5 b

10 c

dtype: object

'''# 修改索引,

# 將s2的索引增加到15個

# 如果新增加的索引值不存在,預設為 nan

print(s2.reindex(index=range(15)))

'''0 nan

1 a

2 nan

3 nan

4 nan

5 b

6 nan

7 nan

8 nan

9 nan

10 c

11 nan

12 nan

13 nan

14 nan

dtype: object

'''# ffill : foreaward fill 向前填充,

# 如果新增加索引的值不存在,那麼按照前乙個非nan的值填充進去

print(s2.reindex(index=range(15), method='ffill'))

'''0 nan

1 a

2 a

3 a

4 a

5 b

6 b

7 b

8 b

9 b

10 c

11 c

12 c

13 c

14 c

dtype: object

'''# reindex dataframe

df1 = dataframe(np.random.rand(25).reshape([5, 5]), index=['a', 'b', 'd', 'e', 'f'], columns=['c1', 'c2', 'c3', 'c4', 'c5'])

print(df1)

''' c1 c2 c3 c4 c5

a 0.700437 0.844187 0.676514 0.727858 0.951458

b 0.012703 0.413588 0.048813 0.099929 0.508066

d 0.200248 0.744154 0.192892 0.700845 0.293228

e 0.774479 0.005109 0.112858 0.110954 0.247668

f 0.023236 0.727321 0.340035 0.197503 0.909180

'''# 為 dataframe 新增乙個新的索引

# 可以看到 自動 擴充為 nan

print(df1.reindex(index=['a', 'b', 'c', 'd', 'e', 'f']))

''' 自動填充為 nan

c1 c2 c3 c4 c5

a 0.700437 0.844187 0.676514 0.727858 0.951458

b 0.012703 0.413588 0.048813 0.099929 0.508066

c nan nan nan nan nan

d 0.200248 0.744154 0.192892 0.700845 0.293228

e 0.774479 0.005109 0.112858 0.110954 0.247668

f 0.023236 0.727321 0.340035 0.197503 0.909180

'''# 擴充列, 也是一樣的

print(df1.reindex(columns=['c1', 'c2', 'c3', 'c4', 'c5', 'c6']))

''' c1 c2 c3 c4 c5 c6

a 0.700437 0.844187 0.676514 0.727858 0.951458 nan

b 0.012703 0.413588 0.048813 0.099929 0.508066 nan

d 0.200248 0.744154 0.192892 0.700845 0.293228 nan

e 0.774479 0.005109 0.112858 0.110954 0.247668 nan

f 0.023236 0.727321 0.340035 0.197503 0.909180 nan

'''# 減小 index

print(s1.reindex(['a', 'b']))

''' 相當於乙個切割效果

a 1

b 2

dtype: int64

'''print(df1.reindex(index=['a', 'b']))

''' 同樣是乙個切片的效果

c1 c2 c3 c4 c5

a 0.601977 0.619927 0.251234 0.305101 0.491200

b 0.244261 0.734863 0.569936 0.889996 0.017936

'''# 對於乙個 serie 來說,可以使用 drop,來丟掉某些 index

print(s1.drop('a'))

''' 就只剩下 三個了

b 2

c 3

d 4

dtype: int64

'''# dataframe drop(a) 直接去掉一行

print(df1.drop('a', axis=0))

''' axis 預設 是 行

c1 c2 c3 c4 c5

b 0.571883 0.254364 0.530883 0.295224 0.352663

d 0.858452 0.379495 0.593284 0.786078 0.949718

e 0.556276 0.643187 0.808664 0.289422 0.501041

f 0.737993 0.286072 0.332714 0.873371 0.421615

'''print(df1.drop('c1', axis=1))

''' 將 c1 的列 去掉

c2 c3 c4 c5

a 0.326681 0.247832 0.601982 0.145905

b 0.373961 0.393819 0.439284 0.926706

d 0.558490 0.617851 0.461280 0.373102

e 0.030434 0.566498 0.383103 0.739243

f 0.982220 0.989826 0.957863 0.411514

'''

Numpy中的函式

生成用函式 效果np.array x 將輸入資料轉化為乙個ndarray np.array x,dtype 將輸入資料轉化為乙個型別為type的ndarray np.asarray array 將輸入資料轉化為乙個新的 copy ndarray np.ones n 生成乙個n長度的一維全一ndarr...

Numpy中的transpose函式

transpose 的操作物件是矩陣。我們用乙個例子來說明這個函式 0 1 2 3 4 5 6 7 這是乙個shape為 2,2,2 的矩陣,現在對它進行transpose操作。首先我們對矩陣的維度進行編號,上述矩陣有三個維度,則編號分別為0,1,2,而transpose函式的引數輸入就是基於這個編...

numpy中的tile函式

在看機器學習實戰這本書時,遇到numpy.tile a,b 函式,愣是沒看懂怎麼回事,裝了numpy模組後,實驗了幾把,原來是這樣子 重複a,b次,這裡的b可以時int型別也可以是遠組型別。python view plain copy import numpy numpy.tile 0,0 5 在列...