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

Python之numpy教程(一):基础概念

2016-05-27 20:46 1056 查看
首先要安装好numpy包,具体如何安装请另寻教程

1.加载

import numpy as np


2.建立一个简单数据

data = [[ 0.9526, -0.246 , -0.8856],[ 0.5639,  0.2379,  0.9104]]


输入data,运行结果:

[[0.9526, -0.246, -0.8856], [0.5639, 0.2379, 0.9104]]


3.把data转化为数组对象(ndarray)

data = np.array(data)


再运行一下data,看看它变成了什么

array([[ 0.9526, -0.246 , -0.8856],
[ 0.5639,  0.2379,  0.9104]])


4.没错,这就是多维数组模式,可以方便的进行计算,比如

data*10
输出:

array([[ 0.9526, -0.246 , -0.8856],
[ 0.5639,  0.2379,  0.9104]])


再比如

data + data
输出:

array([[ 1.9052, -0.492 , -1.7712],
[ 1.1278,  0.4758,  1.8208]])


5.了解了何为ndarray,然后看一下它的基本语法吧,再建立两个数据

data1 = [6,7.5,8,0,1]
arr1 = np.array(data1)
data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)


对于大型数据,不可能去一行一行的去数数据的属性,比如行、列等,因此需要简单语法直接给出结果

查看数组的维度,即数组轴的个数,数学称为矩阵的秩,用ndim语句

arr2.ndim
输出:

2

6.查看数组的行和列信息,用shape语句

arr2.shape
输出:

(2, 4)


7.np.array会尝试为新建的数组推断出一个较为合适的数据类型,这个数据类型会保存在一个特殊的dtype对象中。比如刚才那两个数据:

arr1.dtype
输出:

dtype('float64')


arr2.dtype
输出:

dtype('int32')


8.zerosones函数可以分别创建指定长度或形状的全0或全1数组,empty可以创建一个没有具体任何值的数组。

np.zeros(10)
输出:

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


np.ones((3,6))
输出:

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

np.empty((2,3,2))
输出:

array([[[  1.01283457e-321,   0.00000000e+000],
[  0.00000000e+000,   0.00000000e+000],
[  0.00000000e+000,   0.00000000e+000]],

[[  0.00000000e+000,   0.00000000e+000],
[  0.00000000e+000,   0.00000000e+000],
[  0.00000000e+000,   0.00000000e+000]]])


9.arrange是Python内置函数range的数组版

np.arange(15)
输出:

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


总结一下1~9:



10.ndarray的数据类型dtype:

arr1 = np.array([1,2,3],dtype=np.float64)
arr2 = np.array([1,2,3],dtype=np.int32)
arr1.dtype
arr2.dtype


输出:

dtype('float64')

dtype('int32')


Numpy的数据类型如图:





11.用astype进行数据类型转换

arr = np.array([1,2,3,4,5])
arr.dtype
float_arr = arr.astype(np.float64)
float_arr.dtype


输出:

dtype('int32')

dtype('float64')


上面这个例子把整数转换成了浮点数,如果把浮点数转换为整数,则小数部分会被截断。再看下面的例子:

arr = np.array([3.7,-1.2,-2.6,0.5,12.9,10.1])
arr
输出:

array([  3.7,  -1.2,  -2.6,   0.5,  12.9,  10.1])


arr.astype(np.int32)
输出:

array([ 3, -1, -2,  0, 12, 10])


也可以把字符串型转换为数值型(注意字符型string后面的那个_):

numeric_strings = np.array(['1.25','-9.6','42'],dtype=np.string_)
numeric_strings
输出:

array([b'1.25', b'-9.6', b'42'],
dtype='|S4')

numeric_strings.astype(float)
输出:

array([  1.25,  -9.6 ,  42.  ])


12.把一组数据的类型赋给另一组数据

int_array = np.arange(10)
calibers = np.array([.22,.270,.357,.380,.44,.50],dtype=np.float)
int_array.astype(calibers.dtype)
输出:

array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: