Numpy安装
安装教程:http://blog.csdn.net/u013355826/article/details/73692327
Numpy是什么
Numpy是高性能的科学计算和数据分析包。
Numpy的ndarry
ndarry是同构的数据多维容器,也就是说所有的元素的类型一致的。
创建 ndarry
import numpy as np #导入模块numpy并以np作为别名(必须有!)
#创建 ndarray
A = np.array([1,2,3,4]) #创建一维数组
B1 = np.array([[1,2,3],[4,5,6],[7,8,9]]) #创建多维数组
B2 = np.array([[1,2,3],
[4,5,6],
[7,8,9]])#创建多维数组(另一种格式)
C = np.arange(4) #创建一维数组
D1 = np.arange(9).reshape((3,3)) #创建多维数组(注意:数组范围最大是8,不能等于9)
D2 = np.arange(2,19,2).reshape((3,3))#注意:从2开始,最大数字是18,间隔是2
D3 = np.linspace(1,10,6).reshape((2,3)) #注意和 np.arange区别
E1 = np.zeros((2,3)) # 没有特别的指出,numpy数据类型都是基本的flote64.
E2 = np.zeros((2,3),dtype = int)
F = np.ones((2,3),dtype = int)
print('A:\n',A)
print('B1:\n',B1)
print('B2:\n',B2)
print('C:\n',C)
print('D1:\n',D1)
print('D2:\n' ,D2)
print('D3:\n' ,D3)
print('E1:\n' ,E1)
print('E2:\n' ,E2)
print('F:\n' ,F)
输出结果:
=========
A:
[1 2 3 4]
B1:
[[1 2 3]
[4 5 6]
[7 8 9]]
B2:
[[1 2 3]
[4 5 6]
[7 8 9]]
C:
[0 1 2 3]
D1:
[[0 1 2]
[3 4 5]
[6 7 8]]
D2:
[[ 2 4 6]
[ 8 10 12]
[14 16 18]]
D3:
[[ 1. 2.8 4.6]
[ 6.4 8.2 10. ]]
E1:
[[ 0. 0. 0.]
[ 0. 0. 0.]]
E2:
[[0 0 0]
[0 0 0]]
F:
[[1 1 1]
[1 1 1]]
Numpy的基本属性
#数据类型
A1 = np.array([[1,2,3],
[4,5,6],
[7,8,9]])#创建多维数组(另一种格式)
A2 = np.array([[1.0,2,3], #注意是1.0
[4,5,6],
[7,8,9]])#创建多维数组(另一种格式)
#数组的横列数
B1 = np.array([1,2,3,4])
B2 = np.array([[1,2,3],
[4,5,6],
[7,8,9]])#创建多维数组(另一种格式)
print('A1-TYPE:',A1.dtype) #输出元素的类型
print('A2-TYPE:',A2.dtype) #输出元素的类型
print('B1-SHAPE:',B1.shape) #输出数组的类型
print('B2-SHAPE:',B2.shape)
输出结果
=========
A1-TYPE: int32
A2-TYPE: float64
B1-SHAPE: (4,)
B2-SHAPE: (3, 3)
Numpy基本运算
#基本运算
A = np.array([10,20,30,40])
B = np.arange(4)
print('A-B: ',A-B)
print('10*cos(A): ',10* np.cos(A))
print('判断 b<3: ',B<3) #小于 3的 true, 否则是false
print('判断b == 3: ',B==3)#等于3的 true, 否则是false
#二维矩阵运算
C = np.array([[1,2,3],
[4,5,6]])
D = np.arange(10,16).reshape((2,3))
E = C*D #逐个相乘,每个位置的逐个相乘。注意形状一样
D1 = np.arange(4,10).reshape((3,2))
E1 = C.dot(D1) #矩阵相乘,满足相乘的条件
E2 = np.dot(C,D1)
print('E:\n',E)
print('E1:\n',E1)
print('E2:\n',E1)
F1 = np.random.random((2,3))
print('F1:\n',F1)
print('数组的元素的和: ',np.sum(F1)) #求数组的元素的和
print('数组的元素的最小值: ',np.min(F1)) #求数组的元素的最小值
print('数组的元素的最小值: ',np.max(F1)) #求数组的元素的最大值
#可以求一行/列中的最大值、最小值、所有元素的和。
#每一行:axis = 1 ;每一列:axis = 0
print('每一行的和: ',np.sum(F1,axis = 1))#每一行的和
print('每一列的最小值:',np.min(F1,axis = 0)) #每一列的最小值
print(np.max(F1,axis = 1)) #每一行的最大值
print('最小元素索引值: ',np.argmin(F1)) #最小值的索引
print('最大元素索引值: ',np.argmax(F1))#最大值的索引
print('每行最大元素索引值: ',np.argmax(F1,axis = 1))#最小值的索引
print('每列最小元素索引值: ',np.argmin(F1,axis = 0))#最小值的索引
print('平均值: ',np.mean(F1)) #求平均值,可以单独对行或者列
print('每行平均值: ',np.mean(F1, axis = 1))#每行的平均值
print('平均值: ',F1.mean())
A1 = np.array([10,20,30,40])
print('依次累加值:',np.cumsum(A1)) #依次累加值
# A1 = [10,20,30,40] 累加和是 [10 ,10+20,10+20+30,10+20+30+40]
print('依次相减:',np.diff(A1)) #依次累差
# A1 = [10,20,30,40] 累差和是 [10 ,20-10,30-20,40-30]
A2 = np.array([[25,4,23],
[5,51,41],
[14,2,19]])
print('A2 逐行排序:\n',np.sort(A2))
print('A2转置矩阵:',np.transpose(A2))
print('A2转置矩阵:',A2.T)
print('转化后矩阵:\n',np.clip(A2,5,30))# 所有小于5的数字都等于5,所有大于30数字都等于30
输出结果
========
A-B: [10 19 28 37]
10*cos(A): [-8.39071529 4.08082062 1.5425145 -6.66938062]
判断 b<3: [ True True True False]
判断b == 3: [False False False True]
E:
[[10 22 36]
[52 70 90]]
E1:
[[ 40 46]
[ 94 109]]
E2:
[[ 40 46]
[ 94 109]]
F1:
[[ 0.57782146 0.81000401 0.39892097]
[ 0.30544834 0.44134691 0.99760331]]
数组的元素的和: 3.53114500796
数组的元素的最小值: 0.305448339444
数组的元素的最小值: 0.997603311687
每一行的和: [ 1.78674644 1.74439856]
每一列的最小值: [ 0.30544834 0.44134691 0.39892097]
[ 0.81000401 0.99760331]
最小元素索引值: 3
最大元素索引值: 5
每行最大元素索引值: [1 2]
每列最小元素索引值: [1 1 0]
平均值: 0.588524167994
每行平均值: [ 0.59558215 0.58146619]
平均值: 0.588524167994
依次累加值: [ 10 30 60 100]
依次相减: [10 10 10]
A2 逐行排序:
[[ 4 23 25]
[ 5 41 51]
[ 2 14 19]]
A2转置矩阵: [[25 5 14]
[ 4 51 2]
[23 41 19]]
A2转置矩阵: [[25 5 14]
[ 4 51 2]
[23 41 19]]
转化后矩阵:
[[25 5 23]
[ 5 30 30]
[14 5 19]]
numpy的索引
import numpy as np
A = np.array([1,2,3,4])
B = np.arange(12).reshape((3,4))
print(A,'\n',B)
#索引一维数组
print(A[1])
#索引二维数组(注意数组范围是从0开始)
print(B[0][0]) #输出某一个元素
print(B[2]) #输出一行元素
print(B[0,:]) #输出一行元素
print(B[:,3]) #输出一列元素
#循环行输出
for row in B:
print(row)
#循环列输出(先把矩阵转置,然后在行输出,就是原矩阵的列输出)
for column in B.T:
print(column)
#循环输出每一个元素(先把矩阵变成一个行矩阵,然后在for循环输出)
B = B.flatten();
print(B)
for row in B:
print(row)
输出结果
[1 2 3 4]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
2
0
[ 8 9 10 11]
[0 1 2 3]
[ 3 7 11]
[0 1 2 3]
[4 5 6 7]
[ 8 9 10 11]
[0 4 8]
[1 5 9]
[ 2 6 10]
[ 3 7 11]
[ 0 1 2 3 4 5 6 7 8 9 10 11]
0
1
2
3
4
5
6
7
8
9
10
11