您的位置:首页 > 编程语言 > Python开发

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

2019-05-23 19:42 751 查看

numpy知识学习1-python数据分析与机器学习实战(学习笔记)
转自:durian221783310
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]¶

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

fname,顾名思义,就是文件名,不详述
delimiter:str,int,or sequence,optional.他是分割值,即表示你的数组用什么来分割。
usecols,即选择读哪几行,在讲文件读入代码的时候,我们通常是将属性集读为一个数组,此时它就派上用场了
dtype,表明改行类型
如果你还有必要知道它的其他的参数,你可以参考它的官方文档
例子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() 函数用于查看函数或模块用途的详细说明。

描述
help() 函数用于查看函数或模块用途的详细说明。
语法
help 语法:
参数说明:
object – 对象;
返回值
返回对象帮助信息。
import numpy
world_alcohol=numpy.genfromtxt(“world_alcohol.txt”,delimiter=",")
print(help(numpy.genfromtxt))
输出结果:

1.2numpy.array()函数的介绍
这个数组是numpy最核心的内容.比如:将list转化成ndarray矩阵的格式,
构造一维写一个中括号,构造二维写2个中括号.

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数据类型的更改
numpy.arry里面的所有元素都是同一类型,只要改了numpy.arry里面其中的一个元素.里面的元素都会变成通一个类型的转换.
比如里面其中的某个元素由整数改为小数,输出的结果全部都是小数类型.

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

通过dtype函数可以知道元素是什么类型的.
元素的类型 dtype(‘int32’)
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’]]

获取数组的某个值
以上数据相当于是矩阵类型的方式.想选取矩阵其中的一个数据,比如最后一列中的 '0.5’以及"Cte d’Ivoire"这个数字,应该怎么选取?

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==1 3ff7 0
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]])

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: