numpy中矩阵有关函数

创建矩阵

对于python中的numpy模块,一般用其提供的ndarray对象。 创建一个ndarray对象很简单,只要将一个list作为参数即可。 例如

import numpy as np #引入numpy库

#创建一维的narray对象
a = np.array([1,2,3,4,5])

#创建二维的narray对象
a2 = np.array([[1,2,3,4,5],[6,7,8,9,10]])

#创建多维对象以其类推
获取矩阵行数列数

import numpy as np
a = np.array([[1,2,3,4,5],[6,7,8,9,10]])

print(a.shape) #结果返回一个tuple元组 (2L, 5L)
print(a.shape[0]) #获得行数,返回 2
print(a.shape[1]) #获得列数,返回 5
矩阵截取

//行列截取
import numpy as np
a = np.array([[1,2,3,4,5],[6,7,8,9,10]])

print(a[0:1]) #截取第一行,返回 [[1 2 3 4 5]]
print(a[1,2:5]) #截取第二行,第三、四列,返回 [8 9]

print(a[1,:]) #截取第二行,返回 [ 6  7  8  9 10]
import numpy as np

//条件截取
a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
b = a[a>6] # 截取矩阵a中大于6的元素,范围的是一维数组
print(b) # 返回 [ 7  8  9 10]

# 其实布尔语句首先生成一个布尔矩阵,将布尔矩阵传入[](方括号)实现截取
print(a>6) 
# 返回
[[False False False False False]
 [False  True  True  True  True]]
import numpy as np

a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a)
#开始矩阵为
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]]

a[a>6] = 0
print(a)
#大于6清零后矩阵为
[[1 2 3 4 5]
 [6 0 0 0 0]]


矩阵合并

import numpy as np

a1 = np.array([[1,2],[3,4]])
a2 = np.array([[5,6],[7,8]])

#!注意 参数传入时要以列表list或元组tuple的形式传入
print(np.hstack([a1,a2])) 
#横向合并,返回结果如下 
[[1 2 5 6]
 [3 4 7 8]]

print(np.vstack((a1,a2)))
#纵向合并,返回结果如下
[[1 2]
 [3 4]
 [5 6]
 [7 8]]
通过函数矩阵

arange

复制代码
import numpy as np

a = np.arange(10) # 默认从0开始到10(不包括10),步长为1
print(a) # 返回 [0 1 2 3 4 5 6 7 8 9]

a1 = np.arange(5,10) # 从5开始到10(不包括10),步长为1
print(a1) # 返回 [5 6 7 8 9]

a2 = np.arange(5,20,2) # 从5开始到20(不包括20),步长为2
print(a2) # 返回 [ 5  7  9 11 13 15 17 19]
复制代码

 linspace 

linspace()和matlab的linspace很类似,用于创建指定数量等间隔的序列,实际生成一个等差数列。

import numpy as np

a = np.linspace(0,10,7) # 生成首位是0,末位是10,含7个数的等差数列
print(a) 
# 结果 
[  0.           1.66666667   3.33333333   5.         6.66666667  8.33333333  10.        ]

 logspace 

linspace用于生成等差数列,而logspace用于生成等比数列。 
下面的例子用于生成首位是100,末位是102,含5个数的等比数列。

import numpy as np

a = np.logspace(0,2,5)
print(a)
# 结果
[   1.      3.16227766   10.           31.6227766   100.  ]
 

 ones、zeros、eye、empty 

ones创建全1矩阵 
zeros创建全0矩阵 
eye创建单位矩阵 
empty创建空矩阵(实际有值)

复制代码
import numpy as np

a_ones = np.ones((3,4)) # 创建3*4的全1矩阵
print(a_ones)
# 结果
[[ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]]

a_zeros = np.zeros((3,4)) # 创建3*4的全0矩阵
print(a_zeros)
# 结果
[[ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]]

a_eye = np.eye(3) # 创建3阶单位矩阵
print(a_eye)
# 结果
[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]

a_empty = np.empty((3,4)) # 创建3*4的空矩阵 
print(a_empty)
# 结果
[[  1.78006111e-306  -3.13259416e-294   4.71524461e-309   1.94927842e+289]
 [  2.10230387e-309   5.42870216e+294   6.73606381e-310   3.82265219e-297]
 [  6.24242356e-309   1.07034394e-296   2.12687797e+183   6.88703165e-315]]
复制代码

 fromstring 

fromstring()方法可以将字符串转化成ndarray对象,需要将字符串数字化时这个方法比较有用,可以获得字符串的ascii码序列。

a = "abcdef"
b = np.fromstring(a,dtype=np.int8) # 因为一个字符为8为,所以指定dtype为np.int8
print(b) # 返回 [ 97  98  99 100 101 102]

 fromfunction 

fromfunction()方法可以根据矩阵的行号列号生成矩阵的元素。 
例如创建一个矩阵,矩阵中的每个元素都为行号和列号的和。

复制代码
import numpy as np

def func(i,j): 
    return i+j

a = np.fromfunction(func,(5,6)) 
# 第一个参数为指定函数,第二个参数为列表list或元组tuple,说明矩阵的大小
print(a)
# 返回
[[ 0.  1.  2.  3.  4.  5.]
 [ 1.  2.  3.  4.  5.  6.]
 [ 2.  3.  4.  5.  6.  7.]
 [ 3.  4.  5.  6.  7.  8.]
 [ 4.  5.  6.  7.  8.  9.]]
#注意这里行号的列号都是从0开始的


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值