NumPy是Python的一个科学计算库,提供了矩阵计算的功能。Pandas对NumPy库进行了二次封装,提供了更强大的功能。
NumPy可用来存储和处理大型矩阵,比Python自身的数据结构(字符串,队列,元组,字典)更高级。NumPy的主要对象是一个多维度的,均匀的多维数组,可以进行矩阵运算。

1.创建矩阵2.ndarray对象属性
3.矩阵的截取

创建矩阵

(1) 直接赋值创建矩阵
import numpy as np
#创建一维数组
arr1=np.array([1,2,3,4,5])
print(arr1)
print(arr1.shape)   #结果为(5,)

#创建二维数组
arr2=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(arr2.shape)   #结果为(2, 5),是一个2行5列的二维数组

修改一维矩阵和二维矩阵

#修改一维数组第1个元素的值
arr1[1]=100			#结果为[  1 100   3   4   5]

#修改二维数组第1行第2列元素的值
arr2[1,2]=1000

#修改二维数组第0行
arr2[0]=(1,1,1,1,1)
arr2[0]=1

矩阵求和

#全部求和
arr.sum()

#按列对二维数组求和
arr.sum(axis=0)

#按行对二维数组求和
arr.sum(axis=1)

axis是轴的意思。轴是用来为超过一维的数组定义的属性,二维数组拥有两个轴。
axis=0为行,axis=1为列。

(2) 通过函数创建矩阵

1.NumPy的range()函数

np.arange([start,]stop[,step,],dtype=None)

example:

import numpy as np

#创建一维数组
arr=np.arange(1,11,3)
# output:
[ 1  4  7 10]

#创建二维矩阵
arr=np.arange(1,13).reshape(3,4)
print(arr)
#output:
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

2.NumPy的随机函数

np.random.rand(6)  #取6个位于[0,1]中的随机样本
np.random.randint(1,100,5)   #从1到100中取5个整数
np.random.randn(3,4)	#从标准正态分布中返回多个样本值生成3行4列的数组

再次运行脚本,返回结果不同,若想保持不变,则需设置随机数种子,如

np.random.seed(1)
print(np.random.randn(3,4))

多次运行,结果保持不变。

3.NumPy的linspace()函数

np.linspace() 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

4.NumPy的logspace()函数

np.logspace()函数用于生成等比数列

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
#序列的起始值为base**start,终止值为base**stop

ndarray对象属性

ndarray.ndim : 数组的维数,也称为秩rank。
ndarray.shape : 数组各维的大小,是tuple元组类型。对一个n行,m列的矩阵来说,shape为(n,m)
ndarray.size : 数组中元素的总数。
ndarray.dtype : 数组每个元素的类型

矩阵的截取

1.按行列截取矩阵

import numpy as np

arr2=np.array([[1,2,3,4,5],[6,7,8,9,10]])

#获取矩阵第0-1行数据
print(arr2[0:1])

#获取矩阵第0行数据
print(arr2[0])
print(arr2[0,:])

#获取第1行,第2-4列数据
print(arr2[1,2:5])

#获取矩阵前两列的数据
print(arr2[:,0:2])

numpy截取数组部分和python的list截取部分不同,它不创建新数组,只是指向原数组的部分,所以当修改截取部分的某个值,原数组也会被修改,它们都指向同一个数组。

arr2[0,1:4]
s[0]=100
print(arr2)

#output:
[[  1 100   3   4   5]
 [  6   7   8   9  10]]

2.按条件截取矩阵

import numpy as np

arr=np.array([[1,2,3,4,5],[6,7,8,9,10]])

print(arr[arr>6])
print(arr>6)

#output:
[ 7  8  9 10]
[[False False False False False]
 [False  True  True  True  True]]

按条件截取数组,使用最多的是将数组中满足条件的元素变成指定值,例:

arr[arr>6]=0
print(arr)

#output:
[[1 2 3 4 5]
 [6 0 0 0 0]]