numpy基本知识

numpy

(附件为代码运行信息)

1、轴与长度

In [5]:

import numpy as np

vector = np.array([1,2,3]) #向量
matrix = np.array([[1,2,3],[4,5,6]]) #矩阵
tensor = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])
print(vector)
print('-'*10)
print(matrix)
print('-'*10)
print(tensor)
[1 2 3]
----------
[[1 2 3]
 [4 5 6]]
----------
[[[1 2 3]
  [4 5 6]]

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

In [6]:

#.ndim (维度)
print(vector.ndim)
print('-'*10)
print(matrix.ndim)
print('-'*10)
print(tensor.ndim)
1
----------
2
----------
3

In [7]:

#shape
print(vector.shape)
print('-'*10)
print(matrix.shape)
print('-'*10)
print(tensor.shape) #两层,二行,三列
(3,)
----------
(2, 3)
----------
(2, 2, 3)

In [8]:

#dtype
print(vector.dtype)
print('-'*10)
print(matrix.dtype)
print('-'*10)
print(tensor.dtype)
int32
----------
int32
----------
int32

In [9]:

#size 数据量信息(各个轴的乘积)
print(vector.size)
print('-'*10)
print(matrix.size)
print('-'*10)
print(tensor.size)
3
----------
6
----------
12

2、创建多维数组

In [13]:

a = np.array( [1,2,3])
b = np.array([1,2,3],dtype = np.float_)
print(a,a.dtype)
print('-'*10)
print(b,b.dtype)
[1 2 3] int32
----------
[1. 2. 3.] float64

In [15]:

#np.zeros() 根据数组形状创建全为0的数组
a = np.zeros((2,3))
b = np.zeros((2,3), dtype = np.int_)
print(a,a.dtype)
print('-'*10)
print(b,b.dtype)
[[0. 0. 0.]
 [0. 0. 0.]] float64
----------
[[0 0 0]
 [0 0 0]] int32

In [17]:

#np.arange() 根据起点、终点和步长创建
a = np.arange(5)
b = np.arange(3,5)
c = np.arange(3,5,0.5)
d = np.arange(3,5,0.5,dtype = np.float32)
print(a,a.dtype)
print('-'*10)
print(b,b.dtype)
print('-'*10)
print(c,c.dtype)
print('-'*10)
print(d,d.dtype)
[0 1 2 3 4] int32
----------
[3 4] int32
----------
[3.  3.5 4.  4.5] float64
----------
[3.  3.5 4.  4.5] float32

In [18]:

#np.linspace() 根据起点、终点和元素数量创建
a = np.linspace(3,5,4)
b = np.linspace(3,5,4,dtype=np.float32)
print(a,a.dtype)
print('-'*10)
print(b,b.dtype)
[3.         3.66666667 4.33333333 5.        ] float64
----------
[3.        3.6666667 4.3333335 5.       ] float32

3、数组间运算和广播运算

In [20]:

#相同shape的数组进行运算
a = np.array([1,2,3])
b = np.array([4,5,6])
print(a-b)
print('-'*10)
print(a*b)
[-3 -3 -3]
----------
[ 4 10 18]

In [21]:

#广播运算
#多维数组与标量
a = np.array([1,2,3])
print(a*10)
[10 20 30]

In [22]:

#一维数组与二维数组运算,其中一维数组的长度和二维数组的第二个维度长度一致
#一维数组看作行向量,行向量进行复制,与二维数组的类型相同,然后进行运算
a = np.array([1,2,3])
b = np.array([[1,2,3]
             ,[2,3,4]])
print(a.shape)
print(b.shape)
c = a+b
print(c)
print(c.shape)
(3,)
(2, 3)
[[2 4 6]
 [3 5 7]]
(2, 3)

In [24]:

#对于两个维度相同的多维数组之间的运算,Numpy会将长度为1的维度进行复制,实现相同长度后进行逐元素运算
a = np.array([[1,2,3]])
b = np.array([[1,2,3],
             [4,5,6],
             [7,8,9],
             [10,11,23]])
print(a.shape)
print(b.shape)
print(a+b)
(1, 3)
(4, 3)
[[ 2  4  6]
 [ 5  7  9]
 [ 8 10 12]
 [11 13 26]]

In [25]:

#判断 数值
print(b>4)
[[False False False]
 [False  True  True]
 [ True  True  True]
 [ True  True  True]]

In [28]:

print((b>4) & (b<10))
print('-'*10)
print((b>4) | (b<10))
[[False False False]
 [False  True  True]
 [ True  True  True]
 [False False False]]
----------
[[ True  True  True]
 [ True  True  True]
 [ True  True  True]
 [ True  True  True]]

In [4]:

#多维数组的索引与切片
import numpy as np
a = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])
print(a[0]) #第1行
print('-'*10)
print(a[:2]) #第1,2行
print('-'*10)
print(a[:,0]) #第一列
print('-'*10)
print(a[:2,:2])
print('-'*10)
print(a[::2,::2])
[1 2 3]
----------
[[1 2 3]
 [4 5 6]]
----------
[1 4 7]
----------
[[1 2]
 [4 5]]
----------
[[1 3]
 [7 9]]

In [5]:

a = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])
b = a[1,1]
print(b)
5

In [9]:

#位置索引赋值
a = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])
a[1,1] = 0
print(a)
[[1 2 3]
 [4 0 6]
 [7 8 9]]

In [10]:

a = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])
a[::2,:] = 0
print(a)
[[0 0 0]
 [4 5 6]
 [0 0 0]]

In [11]:

#将所有元素修改为特定的值
a[:] = 0
print(a)
[[0 0 0]
 [0 0 0]
 [0 0 0]]

4、高级索引

In [14]:

#逻辑索引
a = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])
print(a[a>4])
print(a[(a>4) & (a<8)])
[5 6 7 8 9]
[5 6 7]

5、多维数组对象的方法

In [15]:

#reshape
a = np.array([1,2,3,4,5,6])
print(a)
print(a.shape)
print(a.reshape(2,3))
print(a.reshape(6,1))
[1 2 3 4 5 6]
(6,)
[[1 2 3]
 [4 5 6]]
[[1]
 [2]
 [3]
 [4]
 [5]
 [6]]

In [18]:

#reshape()中,有一个值 -1 只能用一次,表面这个维度的长度通过其他维度的长度自动计算
print(a.reshape(2,-1))
print(a.reshape(3,-1))

#-1也可将多维数组转为一维数组
print(a.reshape(-1))
[[1 2 3]
 [4 5 6]]
[[1 2]
 [3 4]
 [5 6]]
[1 2 3 4 5 6]

In [24]:

#transpose()
a = np.array([[1,2],
             [4,5],
             [7,8]])
print(a.transpose())

a = np.zeros((10,12,15))
print(a.shape)
b = a.transpose(2,0,1)
print(b.shape)
[[1 4 7]
 [2 5 8]]
(10, 12, 15)
(15, 10, 12)

In [30]:

#mean()
a = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])
print(a.mean())
print(a.mean(axis=(0,1)))
print(a.mean(axis = 0))
print(a.mean(axis = 1))
5.0
5.0
[4. 5. 6.]
[2. 5. 8.]

In [32]:

#sum()
a = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])
print(a.sum())
print(a.sum(axis=(0,1)))
print(a.sum(axis=0))
print(a.sum(axis = 1))
45
45
[12 15 18]
[ 6 15 24]

In [33]:

#std()
a = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])
print(a.std())
print(a.std(axis=(0,1)))
print(a.std(axis=0))
print(a.std(axis = 1))
2.581988897471611
2.581988897471611
[2.44948974 2.44948974 2.44948974]
[0.81649658 0.81649658 0.81649658]

In [34]:

#max() min()
a = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])
print(a.max())
print(a.max(axis=(0,1)))
print(a.min(axis=0))
print(a.min(axis = 1))
9
9
[1 2 3]
[1 4 7]

In [38]:

#round() 四舍五入五成双 
a = np.array([[1.1,2.3,3.4],
             [2.8,9.1,9.1]])
print(a)
print(a.round())
print(a.round(0)) #可选小数位数的参数
[[1.1 2.3 3.4]
 [2.8 9.1 9.1]]
[[1. 2. 3.]
 [3. 9. 9.]]
[[1. 2. 3.]
 [3. 9. 9.]]

In [40]:

#dot() 矩阵乘法
a = np.array([[2,3,4],
             [3,4,5]])
b = np.array([[1,2],
             [4,4],
             [9,7]])
print('a.shape = ',a.shape)
print('b.shape = ',b.shape)
c = a.dot(b)
print(c)
a.shape =  (2, 3)
b.shape =  (3, 2)
[[50 44]
 [64 57]]

In [48]:

a = np.linspace(0,4,6)
b = np.linspace(3,5,6)
print('a.shape = ',a.shape)
print('b.shape = ',b.shape)
c=a.dot(b)
print(c)
a.shape =  (6,)
b.shape =  (6,)
53.6

In [50]:

a = np.linspace(0,4,6)
print(a.dtype)
b = a.astype(np.float32)
print(b.dtype)
float64
float32

6、Numpy常用函数

In [55]:

print(np.e)
print(np.inf)
print(np.NINF)
print(np.pi)
print(np.nan)
2.718281828459045
inf
-inf
3.141592653589793
nan

In [ ]:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值