python資料分析 numpy基礎(一)

2021-08-19 09:04:12 字數 4135 閱讀 6347

1、建立numpy陣列

import numpy as np

print

'使用普通一維陣列生成numpy一維陣列'

data = [6, 7.5, 8, 0, 1]

arr = np.array(data)

print arr

print

'列印元素型別'

print arr.dtype

print

print

'使用普通二維陣列生成numpy二維陣列'

data = [[1, 2, 3, 4], [5, 6, 7, 8]]

arr = np.array(data)

print arr

print

'列印陣列維度'

print arr.shape

print

print

'使用zeros/empty'

print np.zeros(10) # 生成包含10個0的一維陣列

print np.zeros((3, 6)) # 生成3*6的二維陣列

print np.empty((2, 3, 2)) # 生成2*3*2的三維陣列,所有元素未初始化。

print

print

'使用arrange生成連續元素'

print np.arange(15) # [0, 1, 2, ..., 14]

2、numpy陣列指定型別

import numpy as np

print

'生成陣列時指定資料型別'

arr = np.array([1, 2, 3], dtype = np.float64)

print arr.dtype

arr = np.array([1, 2, 3], dtype = np.int32)

print arr.dtype

print

print

'使用astype複製陣列並轉換資料型別'

int_arr = np.array([1, 2, 3, 4, 5])

float_arr = int_arr.astype(np.float)

print int_arr.dtype

print float_arr.dtype

print

print

'使用astype將float轉換為int時小數部分被捨棄'

float_arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])

int_arr = float_arr.astype(dtype = np.int)

print int_arr

print

print

'使用astype把字串轉換為陣列,如果失敗丟擲異常。'

str_arr = np.array(['1.25', '-9.6', '42'], dtype = np.string_)

float_arr = str_arr.astype(dtype = np.float)

print float_arr

print

print

'astype使用其它陣列的資料型別作為引數'

int_arr = np.arange(10)

float_arr = np.array([.23, 0.270, .357, 0.44, 0.5], dtype = np.float64)

print int_arr.astype(float_arr.dtype)

print int_arr[0], int_arr[1] # astype做了複製,陣列本身不變。

3、numpy切片操作

import numpy as np

# 通過索引訪問二維陣列某一行或某個元素

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

print arr[2]

print arr[0][2]

print arr[0, 2] # 普通python陣列不能用。

print

# 對更高維陣列的訪問和操作

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

print arr[0] # 結果是個2維陣列

print arr[1, 0] # 結果是個2維陣列

old_values = arr[0].copy() # 複製arr[0]的值

arr[0] = 42 # 把arr[0]所有的元素都設定為同乙個值

print arr

arr[0] = old_values # 把原來的陣列寫回去

print arr

print

print

'使用切片訪問和運算元組'

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

print arr[1:6] # 列印元素arr[1]到arr[5]

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

print arr[:2] # 列印第1、2行

print arr[:2, 1:] # 列印第1、2行,第2、3列

print arr[:, :1] # 列印第一列的所有元素

arr[:2, 1:] = 0 # 第1、2行,第2、3列的元素設定為0

print arr

4、numpy布林索引

import numpy as np

import numpy.random as np_random

print

'使用布林陣列作為索引'

name_arr = np.array(['bob', 'joe', 'will', 'bob', 'will', 'joe', 'joe'])

rnd_arr = np_random.randn(7, 4) # 隨機7*4陣列

print rnd_arr

print name_arr == 'bob'

# 返回布林陣列,元素等於'bob'為true,否則false。

print rnd_arr[name_arr == 'bob'] # 利用布林陣列選擇行

print rnd_arr[name_arr == 'bob', :2] # 增加限制列印列的範圍

print rnd_arr[-(name_arr == 'bob')] # 對布林陣列的內容取反

mask_arr = (name_arr == 'bob') | (name_arr == 'will') # 邏輯運算混合結果

print rnd_arr[mask_arr]

rnd_arr[name_arr != 'joe'] = 7

# 先布林陣列選擇行,然後把每行的元素設定為7。

print rnd_arr

5、花式索引

import numpy as np

# 花式索引

print('fancy indexing: 使用整數陣列作為索引')

arr = np.empty((8, 4))

for i in range(8):

arr[i] = i

print(arr)

print(arr[[4, 3, 0, 6]]) # 列印arr[4]、arr[3]、arr[0]和arr[6]。

print(arr[[-3, -5, -7]]) # 列印arr[-3]、arr[-5]和arr[-7]行

arr = np.arange(32).reshape((8, 4)) # 通過reshape變換成二維陣列

print(arr)

print(arr[[1, 5, 7, 2], [0, 3, 1, 2]]) # 列印arr[1, 0]、arr[5, 3],arr[7, 1]和arr[2, 2]

print(arr[[1, 5, 7, 2]][:, [0, 3, 1, 2]]) # 1572行的0312列

print(arr[np.ix_([1, 5, 7, 2], [0, 3, 1, 2])]) # 可讀性更好的寫法

python資料分析之Numpy

numpy系統是python的一種開源的數值計算擴充套件 ndarray 多維陣列 所有元素必須是相同型別 ndim屬性,維度個數 shape屬性,各維度大小 dtype屬性,資料型別 coding utf 8 import numpy as np 生成指定維度的隨機多維資料 data np.ran...

Python 資料分析 Numpy模組

numpy模組可以高效的處理資料,提供陣列支援 很多模組都依賴他,比如 pandas scipy matplotlib 首先到 下查詢numpy mkl 我的python版本是3.6.1,系統是64位 使用如下命令安裝 pip install numpy 1.13.3 mkl cp36 cp36m ...

python資料分析 numpy入門

import numpy as np import random 建立陣列 t1 np.array random.randint 2,9 for i in range 10 t2 np.arange 1,6 t3 np.array range 1,10,2 print t1 t1 print t2 ...