Numpy基础教程

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



























评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值