Python3------NumPy学习(二)

上一章我们讲到了ndarray的基本操作,这一章我们仍然从基本操作开始

上一章地址  Python3------NumPy学习(一)   https://blog.csdn.net/jiayouLau/article/details/84432155

2.4.5----切片

有数据如下:array(8行10列)

array([[-0.03862668, -1.46128096, -0.75596237,  0.89737022, -1.86978433,
         0.38845392,  1.14856354, -1.10912275,  1.28900021, -0.86801677],
       [ 1.8701446 ,  0.50407342, -0.74396489, -1.69641331, -0.89969227,
         2.42459765,  0.78987443, -0.82935223,  0.82546455,  0.40524289],
       [-1.7365776 , -0.81501515, -1.08974743, -1.4138561 ,  0.85495155,
         0.30076624, -2.0813311 ,  1.52886975,  0.62945643, -1.48714683],
       [-1.12084983, -0.63070289, -0.20677245, -0.49096973, -0.40551104,
        -0.46320893, -0.73190969,  0.00392486,  2.524498  ,  0.25843191],
       [ 0.05001371,  0.52267878,  1.31974783,  0.64840953,  1.56360431,
        -0.79233575,  1.47275167,  0.61070343, -0.33247221, -0.57492172],
       [ 0.7092757 ,  0.00928591,  0.27008373,  0.79050681, -0.95887888,
         0.03661459,  0.81303927, -0.54139691,  0.69623969,  0.06570421],
       [-1.40481949,  0.49151272,  1.01992235,  1.89152928, -0.76415623,
         0.3100241 ,  1.27156806, -1.76199057, -0.77419965, -0.17574386],
       [-0.21745814, -1.78433763, -0.7953073 ,  0.4765644 , -0.2589575 ,
         0.97014013,  1.67321489,  1.73370987,  0.29886514,  1.27186522]])

想要获得第一行的前五列数据怎么操作?

b = array[0,0:5]
print(b)

------------
[-0.03862668 -1.46128096 -0.75596237  0.89737022 -1.86978433]

参数[0,0:5]中,第一个0表示想要截取的行,0:5表示想要截取的列包含第0列但是不包含第5列

如果想要截取所有行或者所有列可以写成:,如:所有行的前3列  [:,0:3]

[[-0.03862668 -1.46128096 -0.75596237]
 [ 1.8701446   0.50407342 -0.74396489]
 [-1.7365776  -0.81501515 -1.08974743]
 [-1.12084983 -0.63070289 -0.20677245]
 [ 0.05001371  0.52267878  1.31974783]
 [ 0.7092757   0.00928591  0.27008373]
 [-1.40481949  0.49151272  1.01992235]
 [-0.21745814 -1.78433763 -0.7953073 ]]

如果想要得到某些行的所有列也同理

下面讲一下多维数组(矩阵)的索引

有如下矩阵:

a1 = np.array([ [[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]] ])
x = a1[0,1,2]
print(x)

-----------
6

在numpy学习(一)中讲到的构成单元,这里也可以按构成单元的方法来分析。

下面简单介绍一下数组去重,看一个例子就好

temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])
b = np.unique(temp)
print(b)


---------------------------
[1 2 3 4 5 6]

3------ndarray的运算

3.1------逻辑运算

有如下数据:

[[-0.03862668 -1.46128096 -0.75596237  0.89737022 -1.86978433]
 [ 1.8701446   0.50407342 -0.74396489 -1.69641331 -0.89969227]
 [-1.7365776  -0.81501515 -1.08974743 -1.4138561   0.85495155]
 [-1.12084983 -0.63070289 -0.20677245 -0.49096973 -0.40551104]
 [ 0.05001371  0.52267878  1.31974783  0.64840953  1.56360431]]

需求:以0.5为界,将这个5行5列的矩阵中大于0.5的数据变为true,反之变为false。

​

​array=array>0.5
print(array)

-----------------
[[False False False  True False]
 [ True  True False False False]
 [False False False False  True]
 [False False False False False]
 [False  True  True  True  True]]

需求:将数据大于0.5的数据变为1

array[array>0.5]=1
print(array)

-----------------
[[-0.03862668 -1.46128096 -0.75596237  1.         -1.86978433]
 [ 1.          1.         -0.74396489 -1.69641331 -0.89969227]
 [-1.7365776  -0.81501515 -1.08974743 -1.4138561   1.        ]
 [-1.12084983 -0.63070289 -0.20677245 -0.49096973 -0.40551104]
 [ 0.05001371  1.          1.          1.          1.        ]]

这一类的判断方法还有:np.all()    np.any()    判断所有/是否存在元素满足某个条件 

三元运算符: np.where(condition,result1,result2)-----condition为判断条件,满足则返回result1,否则返回result2

3.2------统计运算

  • min(a[, axis, out, keepdims])------计算数组或者矩阵中的最小元素
    • Return the minimum of an array or minimum along an axis.
  • max(a[, axis, out, keepdims])------计算数组或者矩阵中的最大元素
    • Return the maximum of an array or maximum along an axis.
  • median(a[, axis, out, overwrite_input, keepdims])------计算数组或者矩阵所有元素的中位数
    • Compute the median along the specified axis.
  • mean(a[, axis, dtype, out, keepdims])------计算数组或者矩阵所有元素的算术平均值
    • Compute the arithmetic mean along the specified axis.
  • std(a[, axis, dtype, out, ddof, keepdims])------计算数组或者矩阵所有元素的标准差
    • Compute the standard deviation along the specified axis.
  • var(a[, axis, dtype, out, ddof, keepdims])------计算数组或者矩阵所有元素的方差
    • Compute the variance along the specified axis.  

这里有一个参数需要特别注意----axis,表述轴,进一步----0代表列,1代表行。即可以根据某个数组或者矩阵中的某些行和列进行计算。

看代码:

a = np.array([[1,2,3,4],
			  [2,3,4,5],
			  [3,4,5,6],
			  [4,5,6,7]])
c = np.min(a,1)
print("c中每一行的最小值是:",c)
c = np.max(a[:,0:2],0)
print("c中所有行的前两列的最大值是:",c)

------------------
c中每一行的最小值是: [1 2 3 4]
c中所有行的前两列的最大值是: [4 5]

3.3------数组(矩阵)与数的计算 

这里没什么好说的,对应不同的操作,分别将数组或矩阵中的每个元素做对应的操作。

3.4------数组、矩阵之间的计算 

对于维数不相同的数组或者矩阵,这里不做介绍。

这里介绍如下方法

np.mulply()  ----数组中对应元素相乘

np.matmul()  np.dot() ----矩阵相乘

运算符号: *  @ 也可以进行运算,其中当使用np.matrix()获得矩阵,此时这两个运算符都表示矩阵相乘

其他情况下, *表示对应元素相乘,@表示矩阵相乘

3.5------合并

  • numpy.concatenate((a1, a2, ...), axis=0)

   这里axis代表轴,0表示列,1表示行,即按行/列进行合并

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
c = np.concatenate((a, b), axis=0)
print(c)
d = np.concatenate((a, b.T), axis=1)
print(d)

------------------
[[1 2]
 [3 4]
 [5 6]]

[[1 2 5]
 [3 4 6]]
  • numpy.hstack(tup) Stack arrays in sequence horizontally (column wise)----已行为单位操作
  • numpy.vstack(tup) Stack arrays in sequence vertically (row wise).

这里参数为元组

a = np.array((1, 20))
b = np.array((5, 6))
c = np.hstack((a,b))
print(c)
d = np.vstack((a,b))
print(d)

------------------
[ 1 20  5  6]

[[ 1 20]
 [ 5  6]]

3.6------分割

这里主要介绍np.spilt()方法,这其中axis表示轴,0----切分列,1----切分行


A = np.arange(12).reshape(3, 4)
print A


print np.split(A, 2, axis = 1)

print np.split(A, 3, axis = 0)

------------------
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
-------------------------
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
------------------

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值