3.3 numpy

1.三方库导入

import numpy as np
'{}'.format(np.typeDict.values())

 

"dict_values([<class 'numpy.bool_'>, <class 'numpy.bool_'>, <class 'numpy.int8'>, <class 'numpy.int8'>, <class 'numpy.int8'>, <class 'numpy.uint8'>, <class 'numpy.uint8'>, <class 'numpy.uint8'>, <class 'numpy.int16'>, <class 'numpy.int16'>, <class 'numpy.int16'>, <class 'numpy.uint16'>, <class 'numpy.uint16'>, <class 'numpy.uint16'>, <class 'numpy.intc'>, <class 'numpy.intc'>, <class 'numpy.uint32'>, <class 'numpy.uintc'>, <class 'numpy.uintc'>, <class 'numpy.int64'>, <class 'numpy.int64'>, <class 'numpy.int64'>, <class 'numpy.uint64'>, <class 'numpy.uint64'>, <class 'numpy.uint64'>, <class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.uint32'>, <class 'numpy.uint32'>, <class 'numpy.int64'>, <class 'numpy.int64'>, <class 'numpy.uint64'>, <class 'numpy.uint64'>, <class 'numpy.float16'>, <class 'numpy.float16'>, <class 'numpy.float16'>, <class 'numpy.float32'>, <class 'numpy.float32'>, <class 'numpy.float64'>, <class 'numpy.float64'>, <class 'numpy.float64'>, <class 'numpy.longdouble'>, <class 'numpy.longdouble'>, <class 'numpy.longdouble'>, <class 'numpy.complex128'>, <class 'numpy.complex64'>, <class 'numpy.complex64'>, <class 'numpy.complex128'>, <class 'numpy.complex128'>, <class 'numpy.complex128'>, <class 'numpy.clongdouble'>, <class 'numpy.clongdouble'>, <class 'numpy.clongdouble'>, <class 'numpy.object_'>, <class 'numpy.object_'>, <class 'numpy.bytes_'>, <class 'numpy.bytes_'>, <class 'numpy.str_'>, <class 'numpy.str_'>, <class 'numpy.str_'>, <class 'numpy.void'>, <class 'numpy.void'>, <class 'numpy.void'>, <class 'numpy.datetime64'>, <class 'numpy.datetime64'>, <class 'numpy.timedelta64'>, <class 'numpy.timedelta64'>, <class 'numpy.bool_'>, <class 'numpy.bool_'>, <class 'numpy.bool_'>, <class 'numpy.int64'>, <class 'numpy.int64'>, <class 'numpy.int64'>, <class 'numpy.uint64'>, <class 'numpy.uint64'>, <class 'numpy.uint64'>, <class 'numpy.float16'>, <class 'numpy.float16'>, <class 'numpy.float16'>, <class 'numpy.float32'>, <class 'numpy.float32'>, <class 'numpy.float32'>, <class 'numpy.float64'>, <class 'numpy.float64'>, <class 'numpy.float64'>, <class 'numpy.complex64'>, <class 'numpy.complex64'>, <class 'numpy.complex64'>, <class 'numpy.complex128'>, <class 'numpy.complex128'>, <class 'numpy.complex128'>, <class 'numpy.object_'>, <class 'numpy.object_'>, <class 'numpy.bytes_'>, <class 'numpy.bytes_'>, <class 'numpy.str_'>, <class 'numpy.str_'>, <class 'numpy.void'>, <class 'numpy.void'>, <class 'numpy.datetime64'>, <class 'numpy.datetime64'>, <class 'numpy.datetime64'>, <class 'numpy.timedelta64'>, <class 'numpy.timedelta64'>, <class 'numpy.timedelta64'>, <class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.int32'>, <class 'numpy.uint32'>, <class 'numpy.uint32'>, <class 'numpy.uint32'>, <class 'numpy.uint64'>, <class 'numpy.int16'>, <class 'numpy.int16'>, <class 'numpy.int16'>, <class 'numpy.uint16'>, <class 'numpy.uint16'>, <class 'numpy.uint16'>, <class 'numpy.int8'>, <class 'numpy.int8'>, <class 'numpy.int8'>, <class 'numpy.uint8'>, <class 'numpy.uint8'>, <class 'numpy.uint8'>, <class 'numpy.complex128'>, <class 'numpy.int64'>, <class 'numpy.uint64'>, <class 'numpy.float32'>, <class 'numpy.complex64'>, <class 'numpy.complex64'>, <class 'numpy.float64'>, <class 'numpy.intc'>, <class 'numpy.uintc'>, <class 'numpy.int32'>, <class 'numpy.longdouble'>, <class 'numpy.clongdouble'>, <class 'numpy.clongdouble'>, <class 'numpy.bool_'>, <class 'numpy.bytes_'>, <class 'numpy.bytes_'>, <class 'numpy.str_'>, <class 'numpy.str_'>, <class 'numpy.object_'>, <class 'numpy.int32'>, <class 'numpy.float64'>, <class 'numpy.complex128'>, <class 'numpy.bool_'>, <class 'numpy.object_'>, <class 'numpy.str_'>, <class 'numpy.bytes_'>, <class 'numpy.bytes_'>])"

 

2.ndarray的重要属性

shuzu = np.arange(24).reshape(6,4)

shuzu

 

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]])

 

shuzu.ndim #数组的维度。一二三维

 

2

 

shuzu.shape #几行几列

 

(6, 4)

 

shuzu.size #元素的总数

 

24

 

shuzu.dtype

 

dtype('int32')

 

3.创建数组

1)array函数 创建一个数组,或者将输入的列表或其他序列转换成ndarray

shuzu2 = np.array([1,2,4,2,7,5,7,5,4,8,21,16]).reshape(3,4)

shuzu2

 

array([[ 1,  2,  4,  2],
       [ 7,  5,  7,  5],
       [ 4,  8, 21, 16]])

 

lizi = np.array([[1,2,3],[9,8,7],[6,3,0],[2,3,3]])

lizi

 

array([[1, 2, 3],
       [9, 8, 7],
       [6, 3, 0],
       [2, 3, 3]])

 

2)arrange函数 产生一个元素由0开始的数组,返回的是ndarray而不是列表

shuzu3 = np.arange(18).reshape(3,6)

shuzu3

 

array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17]])

 

3)zeros函数 产生数据全为0的数组

shuzu4 = np.zeros(10,dtype=np.int32)

shuzu4

 

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

 

shuzu5 = np.ones((3,4),dtype=np.int32) #ones函数作用:产生数据全为1的数组

shuzu5

 

array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])

 

4)random函数

random

shuzu6 = np.random.random(12).reshape(4,3) #返回指定数量的随机数,范围在0和1之间

shuzu6

 

array([[0.64361967, 0.41383032, 0.59942517],
       [0.96873194, 0.44245641, 0.50183907],
       [0.35952847, 0.94468878, 0.99431729],
       [0.65781866, 0.11623172, 0.89006422]])

 

uniform

shuzu7 = np.random.uniform(3,9,(16)) 
#生成指定范围内容的随机数,一组参数决定随机数的上下限,另一个参数决定生成的随机数个数

shuzu7

 

array([7.562285  , 8.98549068, 7.63501622, 7.78447198, 7.26854663,
       3.17515732, 6.13853817, 4.40997569, 7.12225054, 4.65726706,
       8.8482813 , 8.627138  , 4.90995118, 4.616554  , 6.20267482,
       7.04778997])

 

randint

shuzu8 = np.random.randint(4,16,(8))
#生成指定范围内容的整数,一组参数决定随机数的上下限,另一个参数决定生成的随机数个数
shuzu8

 

array([ 9,  4, 12, 11, 11,  8,  6, 14])

 

shuffle

lis = [2,3,4,5,7,9,11,123,455]

np.random.shuffle(lis)

lis

 

[2, 7, 5, 4, 3, 455, 9, 123, 11]

 

4.数组的运算

1)四则运算

data1 = np.array([2.3,5.4])
data2 = np.array([2.5,6])

'加{},减{},乘{},除{}'.format(data1+data2,data1-data2,data1*data2,data1/data2)

 

'加[ 4.8 11.4],减[-0.2 -0.6],乘[ 5.75 32.4 ],除[0.92 0.9 ]'

 

2)标量计算

'标量-加法{},标量-乘法{}'.format(data1+100,data2*2)

 

'标量-加法[102.3 105.4],标量-乘法[ 5. 12.]'

 

5.索引和切片

1)一维数组

yiwei = np.arange(9)**2

yiwei

 

array([ 0,  1,  4,  9, 16, 25, 36, 49, 64], dtype=int32)

 

yiwei[6]

 

36

 

yiwei[2:5] #遵循左闭右开的规则

 

array([ 4,  9, 16], dtype=int32)

 

yiwei[:5:2] #2在这里是步长的意思

 

array([ 0,  4, 16], dtype=int32)

 

2)二维数组

erwei = np.random.randint(8,88,(24)).reshape((4,6))

erwei

 

array([[53, 45, 36, 28, 67, 41],
       [16, 48, 54, 48, 34, 30],
       [48, 70, 37, 30, 77, 86],
       [32, 18, 22, 62, 76, 49]])

 

erwei[2,4]

 

77

 

erwei[1:3]

 

array([[16, 48, 54, 48, 34, 30],
       [48, 70, 37, 30, 77, 86]])

 

erwei[:2]

 

array([[53, 45, 36, 28, 67, 41],
       [16, 48, 54, 48, 34, 30]])

 

erwei[1:3,3]

 

array([48, 30])

 

erwei[:,4]

 

array([67, 34, 77, 76])

 

erwei[2:4,:]

 

array([[48, 70, 37, 30, 77, 86],
       [32, 18, 22, 62, 76, 49]])

 

6.npz文件的导入和导出

1)导入

aa = np.load('国民经济核算季度数据.npz',allow_pickle=True)

#allow_pickle默认为False,在之后的load操作中会报错,需要需要手动设置
aa.files

 

['columns', 'values']

 

bb = aa['columns']
cc = aa['values']
cc

 

array([[1, '2000年第一季度', 21329.9, ..., 1235.9, 933.7, 3586.1],
       [2, '2000年第二季度', 24043.4, ..., 1124.0, 904.7, 3464.9],
       [3, '2000年第三季度', 25712.5, ..., 1170.4, 1070.9, 3518.2],
       ...,
       [67, '2016年第三季度', 190529.5, ..., 15472.5, 12164.1, 37964.1],
       [68, '2016年第四季度', 211281.3, ..., 15548.7, 13214.9, 39848.4],
       [69, '2017年第一季度', 180682.7, ..., 17213.5, 12393.4, 42443.1]],
      dtype=object)

 

bb

 

array(['序号', '时间', '国内生产总值_当季值(亿元)', '第一产业增加值_当季值(亿元)', '第二产业增加值_当季值(亿元)',
       '第三产业增加值_当季值(亿元)', '农林牧渔业增加值_当季值(亿元)', '工业增加值_当季值(亿元)',
       '建筑业增加值_当季值(亿元)', '批发和零售业增加值_当季值(亿元)', '交通运输、仓储和邮政业增加值_当季值(亿元)',
       '住宿和餐饮业增加值_当季值(亿元)', '金融业增加值_当季值(亿元)', '房地产业增加值_当季值(亿元)',
       '其他行业增加值_当季值(亿元)'], dtype=object)

 

import pandas as pd
fff = pd.DataFrame(cc,columns=['序号', '时间', '国内生产总值_当季值(亿元)', '第一产业增加值_当季值(亿元)', '第二产业增加值_当季值(亿元)',
       '第三产业增加值_当季值(亿元)', '农林牧渔业增加值_当季值(亿元)', '工业增加值_当季值(亿元)',
       '建筑业增加值_当季值(亿元)', '批发和零售业增加值_当季值(亿元)', '交通运输、仓储和邮政业增加值_当季值(亿元)',
       '住宿和餐饮业增加值_当季值(亿元)', '金融业增加值_当季值(亿元)', '房地产业增加值_当季值(亿元)',
       '其他行业增加值_当季值(亿元)'])
fff.to_csv('国民经济情况.csv')
fff.to_csv('gmjjqk.csv',encoding='utf_8_sig')
小石小石摩西摩西的学习笔记,欢迎提问,欢迎指正!!!
原文地址:https://www.cnblogs.com/shijingwen/p/13700475.html