python之numpy学习02

# -*- coding: utf-8 -*-
"""
Created on Sun May 14 21:16:22 2017

@author: Administrator
"""


import numpy as np

#numpy ndarray 计算全部元素的和、按行求和,按列求和。
a = np.arange(20).reshape(4, 5)
print ("a:")
print (a)

print("sum of all elements in a:" + str(a.sum()))

print ("maximum element in a: " + str(a.max()))
print ("minimum element in a: " + str(a.min()))
print ("maximum element in each row of a: " + str(a.max(axis=1)))
print ("minimum element in each column of a: " + str(a.min(axis = 0)))


#Numpy同时提供了数组、矩阵对象(matrix)
#矩阵对象和数组对象两点差别:
#矩阵是二维的;矩阵的‘*’操作符进行的是矩阵乘法,乘号左边的矩阵列和乘号右侧的矩阵行要相等。
#而在数组中的‘*’操作符进行的是每一元素的对应相乘,乘号两侧的数组每一维大小需要一致。
#数组可以通过asmatrix或者mat转换为矩阵。

print('---------------------------------------')
a = np.arange(20).reshape(4, 5)
a = np.asmatrix(a)
print (type(a))

b = np .matrix('1.0 2.0;3.0 4.0')
print (type(b))

#矩阵乘法, arange(起始,终止,步长)
b = np.arange(2, 45, 3).reshape(5, 3)
b = np.mat(b)
print (b)
print(type(b))


#指定一维数组的长度
x = np.linspace(0, 2, 9)
print (x)
print (type(x))

#矩阵乘法
print ("matrix a:")
print (a)
print ("matrix b:")
print (b)
print ("matrix c:")
c = a * b
print (c)


#数组元素的访问
#数组和矩阵元素的访问可通过下标进行, 以下均以二维数组(或矩阵)为例:

a = np.array([[3.2, 1.5], [2.5, 4]])
print (a[0][1])
print (a[0, 1])

#通过下标访问来修改数组元素的值
b = a
a[0][1] = 2.0
print ("a:")
print (a)
print ("b:")
print (b)

#上面的b是指向a的内容所在的地址,真正的复制使用copy
a = np.array([[3.2, 1.5], [2.5, 4]])
b = a.copy()
a[0][1] = 2.0
print ("a:")
print (a)
print ("b:")
print (b)
print ("a type:" + str(type(a)) +"\nb type:"+ str(type(b)))



#将a指向其他的地址上,b仍然在原来的地址上
a = np.array([[3.2, 1.5], [2.5, 4]])
b = a
a = np.array([[2, 1], [9, 3]])
print ("a:")
print (a)
print ("b:")
print (b)


a = np.arange(20).reshape(4, 5)
print ("a:")
print(a)

print ("the 2nd and 4th column of a:")
print (a[:,[0,1,3]])
print (a[:, 0])

print('---------------------------------------')
#在单行单列上,取出满足某些条件的元素
print (a[:, 2][a[:,0]> 5])


#使用where函数查找特定值在数组中的位置
print(a)
loc = np.where(a==11)
print (loc)
print (a[loc[0][0], loc[1][0]])


#数组操作
a = np.random.rand(2, 4)
print ("a:")
print (a)

a = np.transpose(a)
print ("a is an array, by using transpose(a):")
print (a)

b = np.random.rand(2, 4)
b = np.mat(b)
print ("b:")
print (b)
print ("b is a matrix, by using b.T:")
print (b.T)

#矩阵求逆
import numpy.linalg as nlg

a = np.random.rand(2, 2)
a = np.mat(a)
print ("a:")
print (a)

ia = nlg.inv(a)
print ("inverse of a:")
print (ia)
print ("a* inv(a)")
print (a*ia)


#求特征值和特征向量
a = np.random.rand(3,3)
print("a:")
print (a)
eig_value, eig_vector = nlg.eig(a)
print ("eigen value:")
print (eig_value)
print ("eigen vector:")
print (eig_vector)

#按列拼接两个向量成一个矩形
a = np.array((1, 2, 3))
b = np.array((2, 3, 4))
print (np.column_stack((a, b)))

print('---------------------------------------')

a = np.random.rand(2, 2)
b = np.random.rand(2, 2)
print ("a:")
print (a)
print ("b:")
print (b)
c = np.hstack([a, b])
d = np.vstack([a, b])
print ("horizontal stacking a and b:")
print (c)
print ("vertical stacking a and b:")
print (d)

#缺失值, 通过isnan判断
a = np.random.rand(2, 2)
a[0, 1] = np.nan
print (np.isnan(a))


print(np.nan_to_num(a))


输出:

a:
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
sum of all elements in a:190
maximum element in a: 19
minimum element in a: 0
maximum element in each row of a: [ 4  9 14 19]
minimum element in each column of a: [0 1 2 3 4]
---------------------------------------
<class 'numpy.matrixlib.defmatrix.matrix'>
<class 'numpy.matrixlib.defmatrix.matrix'>
[[ 2  5  8]
 [11 14 17]
 [20 23 26]
 [29 32 35]
 [38 41 44]]
<class 'numpy.matrixlib.defmatrix.matrix'>
[ 0.    0.25  0.5   0.75  1.    1.25  1.5   1.75  2.  ]
<class 'numpy.ndarray'>
matrix a:
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
matrix b:
[[ 2  5  8]
 [11 14 17]
 [20 23 26]
 [29 32 35]
 [38 41 44]]
matrix c:
[[ 290  320  350]
 [ 790  895 1000]
 [1290 1470 1650]
 [1790 2045 2300]]
1.5
1.5
a:
[[ 3.2  2. ]
 [ 2.5  4. ]]
b:
[[ 3.2  2. ]
 [ 2.5  4. ]]
a:
[[ 3.2  2. ]
 [ 2.5  4. ]]
b:
[[ 3.2  1.5]
 [ 2.5  4. ]]
a type:<class 'numpy.ndarray'>
b type:<class 'numpy.ndarray'>
a:
[[2 1]
 [9 3]]
b:
[[ 3.2  1.5]
 [ 2.5  4. ]]
a:
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
the 2nd and 4th column of a:
[[ 0  1  3]
 [ 5  6  8]
 [10 11 13]
 [15 16 18]]
[ 0  5 10 15]
---------------------------------------
[12 17]
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
(array([2], dtype=int64), array([1], dtype=int64))
11
a:
[[ 0.13378024  0.12118504  0.81883353  0.57752247]
 [ 0.7774044   0.07725228  0.79392817  0.68216484]]
a is an array, by using transpose(a):
[[ 0.13378024  0.7774044 ]
 [ 0.12118504  0.07725228]
 [ 0.81883353  0.79392817]
 [ 0.57752247  0.68216484]]
b:
[[ 0.09190121  0.49461086  0.32441392  0.36051032]
 [ 0.08294519  0.98723508  0.27996493  0.20307041]]
b is a matrix, by using b.T:
[[ 0.09190121  0.08294519]
 [ 0.49461086  0.98723508]
 [ 0.32441392  0.27996493]
 [ 0.36051032  0.20307041]]
a:
[[ 0.7744847   0.60003287]
 [ 0.96965063  0.82703688]]
inverse of a:
[[ 14.08797397 -10.22112507]
 [-16.5172958   13.1927857 ]]
a* inv(a)
[[  1.00000000e+00  -8.88178420e-16]
 [  0.00000000e+00   1.00000000e+00]]
a:
[[ 0.75267716  0.96519622  0.36316502]
 [ 0.00269269  0.60320442  0.51878785]
 [ 0.91322292  0.28138496  0.93459398]]
eigen value:
[ 1.77140763+0.j          0.25953397+0.50413241j  0.25953397-0.50413241j]
eigen vector:
[[-0.57969390+0.j         -0.36351645+0.4711016j  -0.36351645-0.4711016j ]
 [-0.33183110+0.j         -0.29100368-0.43056631j -0.29100368+0.43056631j]
 [-0.74420636+0.j          0.61306492+0.j          0.61306492-0.j        ]]
[[1 2]
 [2 3]
 [3 4]]
---------------------------------------
a:
[[ 0.79608012  0.11640033]
 [ 0.85905787  0.77692935]]
b:
[[ 0.95440984  0.59138443]
 [ 0.08498267  0.21850557]]
horizontal stacking a and b:
[[ 0.79608012  0.11640033  0.95440984  0.59138443]
 [ 0.85905787  0.77692935  0.08498267  0.21850557]]
vertical stacking a and b:
[[ 0.79608012  0.11640033]
 [ 0.85905787  0.77692935]
 [ 0.95440984  0.59138443]
 [ 0.08498267  0.21850557]]
[[False  True]
 [False False]]
[[ 0.92392922  0.        ]
 [ 0.37162311  0.22679525]]

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值