python数据分析与机器学习实战我爱编程

(四)numpy知识学习1-python数据分析与机器学习实战(

2018-04-28  本文已影响64人  努力奋斗的durian

文章原创,最近更新:2018-04-28

1.科学计算库numpy
2.numpy基础结构

课程来源: python数据分析与机器学习实战-唐宇迪

1.科学计算库numpy

数据是由一行一列交叉组成的.矩阵的形式比较方便,而且效率也比较高.numpy是专门做矩阵计算的一个库.以及其他很多的操作.

首先要确保numpy是否安装好,安装方法:pip install numpy
而ananconda是默认numpy是安装好的.

1.1Python科学计算——Numpy.genfromtxt介绍

genfromtxt函数的完整形式为:

numpy.genfromtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None)[source]¶

函数属性介绍:
今天先介绍几个一定会用到的属性:

例子1:

from numpy import genfromtxt,zeros
data=genfromtxt('iris.csv',delimiter=',',usecols=(0,1,2,3))
target=genfromtxt('iris.csv',delimiter=',',usecols=(4),dtype=str)

例子2:

import numpy
world_alcohol=numpy.genfromtxt("world_alcohol.txt",delimiter=",")
print(type(world_alcohol))
print(world_alcohol)

Python科学计算——Numpy.genfromtxt

输出结果:

<class 'numpy.ndarray'>
[[      nan       nan       nan       nan       nan]
 [1.986e+03       nan       nan       nan 0.000e+00]
 [1.986e+03       nan       nan       nan 5.000e-01]
 ...
 [1.987e+03       nan       nan       nan 7.500e-01]
 [1.989e+03       nan       nan       nan 1.500e+00]
 [1.985e+03       nan       nan       nan 3.100e-01]]

拓外1:
help() 函数用于查看函数或模块用途的详细说明。

import numpy
world_alcohol=numpy.genfromtxt("world_alcohol.txt",delimiter=",")
print(help(numpy.genfromtxt))

输出结果:


1.2numpy.array()函数的介绍

>>> import numpy
>>> vector=numpy.array([5,10,15,20])
>>> matrix=numpy.array([[5,10,15],[20,25,30],[35,40,45]])
>>> vector
array([ 5, 10, 15, 20])
>>> matrix
array([[ 5, 10, 15],
       [20, 25, 30],
       [35, 40, 45]])

1.3shape函数的介绍

它的功能是查看矩阵或者数组的维数。
运用在神经网络或算法的时候,并不很清楚中间的流程做了什么事,通过一个中间结果的shape长什么样.通过.shape一方面方便于理解,另外一方面bug的时候,找了很长时间没发现问题,最好的办法是能把shape打印的东西全部打印出来.重头到尾推一遍,哪个shape有问题.没准我们就能找到这个错误.

>>> import numpy
>>> vector=numpy.array([5,10,15,20])
>>> vector.shape
(4,)

>>> import numpy
>>> matrix=numpy.array([[5,10,15],[20,25,30],[35,40,45]])
>>> matrix.shape
(3, 3)

2.numpy基础结构

2.1数据类型的更改

>>> import numpy
>>> vector=numpy.array([5,10,15,20])#整数类型
>>> vector
array([ 5, 10, 15, 20])
>>> vector.dtype
dtype('int32')


>>> vector1=numpy.array([5.1,10,15,20])#改成小数类型
>>> vector1
array([ 5.1, 10. , 15. , 20. ])
>>> vector1.dtype
dtype('float64')


>>> vector2=numpy.array(["5",10,15,20])#改成字符串类型
>>> vector2
array(['5', '10', '15', '20'], dtype='<U2')
>>> vector2.dtype
dtype('<U2')

2.2数据类型的选取

通过索引和切片的的方式对数据进行选取,跟python是一模一样的.
索引:获取数组中特定位置元素的过程
切片:获取数组元素子集的过程.

>>> print(world_alcohol)
[['1986' 'Western Pacific' 'Viet Nam' 'Wine' '0']
 ['1986' 'Americas' 'Uruguay' 'Other' '0.5']
 ['1985' 'Africa' "Cte d'Ivoire" 'Wine' '1.62']
 ...
 ['1987' 'Africa' 'Malawi' 'Other' '0.75']
 ['1989' 'Americas' 'Bahamas' 'Wine' '1.5']
 ['1985' 'Africa' 'Malawi' 'Spirits' '0.31']]



>>> uruguay_other_1986=world_alcohol[1,4]#取其中的某个值
>>> uruguay_other_1986
'0.5'

>>> third_country = world_alcohol[2,2]#取其中的某个值
>>> third_country
"Cte d'Ivoire"
>>> vector=numpy.array([5,10,15,20])
>>> vector
array([ 5, 10, 15, 20])

>>> vector[0:3]
array([ 5, 10, 15])#获取第0,1,2列的数组

二维数组

>>> matrix = numpy.array([
                    [5, 10, 15], 
                    [20, 25, 30],
                    [35, 40, 45]
                 ])
>>> matrix[:,1]#获取第1列的数组
array([10, 25, 40])

>>> matrix[:,0:2]#获取第0列,第1列的数组
array([[ 5, 10],
       [20, 25],
       [35, 40]])

>>> matrix[1:3,0:2]#获取第1行/2行与第0列/第1列交叉的数组
array([[20, 25],
       [35, 40]])

2.3判断数值是否在数组

对numpy .arry()无论进行什么样的操作,相当于对每个元素进行同样的操作.
一维数组

>>> import numpy
>>> vector=numpy.array([5,10,15,20])
>>> vector==10
array([False,  True, False, False])

二维数组
当前二维矩阵是否有等于25的数.


>>> matrix = numpy.array([
                    [5, 10, 15], 
                    [20, 25, 30],
                    [35, 40, 45]
                 ])
>>> matrix==25
array([[False, False, False],
       [False,  True, False],
       [False, False, False]])

得到布尔值的作用:

此部分的内容不是很理解,暂时先放着.

能不能将得到的布尔值当成索引呢?
可以将布尔值当成一个索引,可以将一个真实的值返回出来.
一维数组

>>> vector=numpy.array([5,10,15,20])
>>> equal_to_ten=(vector==10)
>>> equal_to_ten
array([False,  True, False, False])
>>> vector(equal_to_ten)


>>> vector[equal_to_ten]
array([10])
>>> 

二维数组

>>> matrix = numpy.array([
                    [5, 10, 15], 
                    [20, 25, 30],
                    [35, 40, 45]
                 ])
>>> second_column_25=matrix[:,1]==25
>>> second_column_25
array([False,  True, False])
>>> matrix[second_column_25,:]
array([[20, 25, 30]])

上一篇 下一篇

猜你喜欢

热点阅读