首先要安装好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.zeros和ones函数可以分别创建指定长度或形状的全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.])