python数据科学库numpy

目录

1、属性

2、创建函数

3、基础运算

4、切片

4、array合并

5、array分割

6、numpy里的浅拷贝和深拷贝


1、属性

ndim维数
size矩阵的维度
shape矩阵的大小总个数
dtype对象的元素类型

import numpy as np
a=np.array([[1,2,3],[2,3,4]])
print('ndim: ',a.ndim)
print('shape: ',a.shape)
print('size: ',a.size)
print('dtype: ',a.dtype)
****结果如下****
ndim:  2
shape:  (2, 3)
size:  6
dtype:  int32

2、创建函数

np.array()将数据转化为矩阵
np.arrange(n,m,p)生成n到m步长为p的矩阵
np.zeros()生成零矩阵
np.onems()生成1矩阵
A.reshape(m,n)将矩阵A重塑成m*n的矩阵

import numpy as np
a=np.array([[1,2,3],[2,3,4]])
b=np.arange(2,10,2)
c=b.reshape(2,2)
d=np.zeros(3)
e=np.ones(4)
print(a);print(b);print(c);print(d);print(e)
'''
[[1 2 3]
 [2 3 4]]
[2 4 6 8]
[[2 4]
 [6 8]]
[0. 0. 0.]
[1. 1. 1. 1.]
'''

3、基础运算

矩阵加减乘除,是对矩阵里对应位置的元素直接进行加减乘除。

dot是用来对矩阵进行矩阵运算.

aaa=np.array([1,2,3])
bbb=np.array([2,3,4])
ccc=np.array([[1],[2],[3]])
print(aaa+bbb)
print(aaa*bbb)
print(aaa/bbb)
print(np.dot(aaa,bbb))
print(np.dot(aaa,ccc))
***********
[3 5 7]
[ 2  6 12]
[0.5        0.66666667 0.75      ]
20
[14]

4、切片

numpy的切片和python基础数据结构是有相似的地方的,简单来说,就是取第几行第几列,也可以理解为嵌套的字典,但是有一点是不同的就是在取连续行或列的时候是不包括结束行或列的,如a[1:2,0:2]是指的a的第二行的前两列,而不是2、3行的1、2、3列。

a=np.arange(2,11).reshape(3,3)
print('打印a',a)
print('打印第2行',a[1])
print('打印第2行第3列',a[1][2])
print(a[1:2])
print(a[1:2,0:2])
print('打印行')
for i in a:
    print(i)
print('打印列')
for j in a.T:
    print(j)
****结果如下****
打印a [[ 2  3  4]
 [ 5  6  7]
 [ 8  9 10]]
打印第2行 [5 6 7]
打印第2行第3列 7
[[5 6 7]]
[[5 6]]
打印行
[2 3 4]
[5 6 7]
[ 8  9 10]
打印列
[2 5 8]
[3 6 9]
[ 4  7 10]

4、array合并

矩阵的合并分为水平方向的合并和竖直方向的合并,分别使用np.hstack()和np.vstack()。

aa=np.array([1,2,3])
bb=np.array([2,3,4])
c=np.vstack((aa,bb))
d=np.hstack((aa,bb))
print(c)
print(d)
********
[[1 2 3]
 [2 3 4]]
[1 2 3 2 3 4]

5、array分割

矩阵的分割一般使用np.split(矩阵,分割成几份,分割方向),split()只能对矩阵进行均等分割,如六行只能分割成1、2、3、6部分,而不能分割成4部分或者5部分,想要进行不均等分割,需要使用np.array_split()。

a=np.arange(2,11).reshape(3,3)
print(np.split(a,3,axis=0))#默认为行
print(np.split(a,3,axis=1))#按列
print(np.array_split(a,2,0))#不均衡分割
print(np.vsplit(a,3))#省略axis参数,相当于使用split,axis等于0的情况
print(np.hsplit(a,3))#相当于使用split,axis等于1的情况
****
[array([[2, 3, 4]]), array([[5, 6, 7]]), array([[ 8,  9, 10]])]
[array([[2],
       [5],
       [8]]), array([[3],
       [6],
       [9]]), array([[ 4],
       [ 7],
       [10]])]
[array([[2, 3, 4],
       [5, 6, 7]]), array([[ 8,  9, 10]])]
[array([[2, 3, 4]]), array([[5, 6, 7]]), array([[ 8,  9, 10]])]
[array([[2],
       [5],
       [8]]), array([[3],
       [6],
       [9]]), array([[ 4],
       [ 7],
       [10]])]

6、numpy里的浅拷贝和深拷贝

通过赋值的方式,对numpy的矩阵直接进行复制时是相当于对矩阵的浅拷贝,对每个矩阵的修改都会应影响到其他复制的矩阵,想要复制不会互相关联的矩阵,需要使用np.copy()进行复制。

shiyan1=np.array([1,2,3,4])
shiyan2=shiyan1
shiyan3=shiyan2
shiyan4=np.copy(shiyan1)
print(shiyan1 is shiyan2)
shiyan1[1]=22
print(shiyan1)
print(shiyan2)
print(shiyan3)
print(shiyan4)
shiyan2[3]=44
print(shiyan1)
print(shiyan2)
print(shiyan3)
print(shiyan4)
*********
True
[ 1 22  3  4]
[ 1 22  3  4]
[ 1 22  3  4]
[1 2 3 4]
[ 1 22  3 44]
[ 1 22  3 44]
[ 1 22  3 44]
[1 2 3 4]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值