numpy(Numerical Python)
numpy提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
python之numpy的基本使用
记得import numpy噢
创建ndarray数组:
data2=[[1,2,3],[4,5,6]]
y=numpy.array(data2)
print(y)
print(y.dtype) #打印数组的数据类型
print(y.ndim) #打印数组的维度
print(y.shape) #打印数组各个维度的长度,注意y.shape是一个元组
>>>
[[1 2 3]
[4 5 6]]
int64
2
(2, 3)
创建数组:
1.使用zeros, ones, empty来创建数组:
zeros创建元素全为0的数组
ones创建元素全为1的数组
empty创建没有元素的数组
x=numpy.zeros(5)
print(x)
x=numpy.zeros((2,3))
print(x)
>>>
[0. 0. 0. 0. 0.]
[[0. 0. 0.]
[0. 0. 0.]]
2.使用arange生成连续元素
x=numpy.arange(6)
print(x)
x=numpy.arange(0,6,2)
print(x)
>>>
[0 1 2 3 4 5]
[0 2 4]
指定ndarray数组元素的类型:
常用类型: int64,float64
x=numpy.array([1.0,3.2,4.5],dtype=numpy.float64)
print(x)
print(x.dtype)
>>>
[1. 3.2 4.5]
float64
使用astype复制数组,并转化类型
x=numpy.array([1.0,3.2,4.5],dtype=numpy.float64)
y=x.astype(numpy.int64)
print (y)
>>>
[1 3 4]
将字符串元素转换为数值元素:
x=numpy.array(['1','2','3'],dtype=numpy.string_)
y=x.astype(numpy.int64) #若转换失败经常会报错
print(y)
>>>
[1,2,3]
使用其他数组的数据类型作为参数:
x = numpy.array([ 1., 2.6,3. ],dtype = numpy.float32);
y = numpy.arange(3,dtype=numpy.int32);
print (y)
print (y.astype(x.dtype)) #就在这一步
[0 1 2]
[ 0. 1. 2.]
ndarray的矢量化计算:
矢量运算:相同大小的数组键间的运算应用在元素上
矢量和标量运算:“广播”— 将标量“广播”到各个元素
x=numpy.array([1,2,3])
y=numpy.array([2,1,4])
print(x*2)
print(x>2)
print(x+y)
print(x>y)
>>>
[2 4 6]
[False False True]
[3 3 7]
[False True False]
ndarray数组的基本索引和切片:
索引
x=numpy.array(([1,2,3],[4,5,6]))
print(x[0][1])
y=x[0]
print(y)
>>>
2
[1 2 3]
注意: :右端是开区间
一维数组的切片:
x=numpy.array([1,2,3,4,5])
print(x[1:3])
print(x[0:3])
print(x[:3])
print(x[2:])
print(x[::2])
>>>
[2 3]
[1 2 3]
[1 2 3]
[3 4 5]
[1 3 5]
二维数组的切片:
x=numpy.array(([1,2,3],[4,5,6]))
print(x[:2,:2])
a=x[:2,:2]
print(a[0][1])
>>>
[[1 2]
[4 5]]
x=numpy.array([[0,2],[0,4],[5,6]])
x[:2,:1] = [[8],[6]] # 用数组赋值
print (x)
>>>
[[8,2],[6,4],[5,6]]