numpy模块 02

<title>numpy学习</title>




<body> <div tabindex="-1" id="notebook" class="border-box-sizing"> <div class="container" id="notebook-container">
In [121]:
import numpy as np

为啥使用numpy

计算购物车的总共价格

In [2]:
shop_car = [2,3,10,5]
shop_price = [10,200,150,50]

In [3]:
shop_car_np = np.array(shop_car) 

In [4]:
shop_price_np = np.array(shop_price)

In [5]:
shop_car_np

Out[5]:

array([ 2,  3, 10,  5])
In [6]:
shop_price_np

Out[6]:

array([ 10, 200, 150,  50])
In [8]:
np.sum(shop_car_np * shop_price_np)  #### 向量运算

Out[8]:

2370
In [123]:
shop_car_np * 7  #### 矢量运算

Out[123]:

array([14, 21, 70, 35])
In [125]:
shop_car * 7  

Out[125]:

[2,
 3,
 10,
 5,
 2,
 3,
 10,
 5,
 2,
 3,
 10,
 5,
 2,
 3,
 10,
 5,
 2,
 3,
 10,
 5,
 2,
 3,
 10,
 5,
 2,
 3,
 10,
 5]

常见属性

一维数组

In [10]:
arr = np.array([1,2,3,4,5,6])

In [12]:
arr  #### 简单的ndarray一维数组

Out[12]:

array([1, 2, 3, 4, 5, 6])
In [14]:
arr.dtype   #### 数组的数据类型

Out[14]:

dtype('int64')
In [16]:
arr.size  ##### 数组元素的个数

Out[16]:

6
In [17]:
arr.ndim  #### 数组的维度

Out[17]:

1
In [18]:
arr.shape

Out[18]:

(6,)

二维数组

In [19]:
arr2 = np.array([[1,2,3,4,5], [6,7,8,9,10]])

In [20]:
arr2

Out[20]:

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
In [21]:
arr2.ndim  

Out[21]:

2
In [22]:
arr2.shape

Out[22]:

(2, 5)
In [23]:
arr2.T #### 高维数组转置

Out[23]:

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

数据类型转换

In [24]:
arr

Out[24]:

array([1, 2, 3, 4, 5, 6])
In [25]:
arr.dtype

Out[25]:

dtype('int64')
In [26]:
arr.astype('float')  #### 强制转换指定的数据类型

Out[26]:

array([1., 2., 3., 4., 5., 6.])

ndarray数组的创建方式

In [27]:
arr3 = np.array([1,2,3,4,5,6], dtype='float')

In [28]:
arr3

Out[28]:

array([1., 2., 3., 4., 5., 6.])
In [29]:
np.arange(1,10)  ### numpy版的arange

Out[29]:

array([1, 2, 3, 4, 5, 6, 7, 8, 9])
In [30]:
np.arange(10)

Out[30]:

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [34]:
np.linspace(1,10, num=5, endpoint=False)  ##### 均匀分配多少份

Out[34]:

array([1. , 2.8, 4.6, 6.4, 8.2])
In [36]:
np.linspace?  #### 查看函数的使用方法

  File "<ipython-input-36-fe95272a62c5>", line 1
    np.linspace?  #### 查看函数的使用方法
               ^
SyntaxError: invalid syntax
In [37]:
np.zeros?

In [38]:
np.zeros(5)

Out[38]:

array([0., 0., 0., 0., 0.])
In [40]:
np.zeros((2,3), dtype='int')

Out[40]:

array([[0, 0, 0],
       [0, 0, 0]])
In [41]:
np.ones(5)

Out[41]:

array([1., 1., 1., 1., 1.])
In [42]:
np.ones((3,4))

Out[42]:

array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])
In [43]:
np.empty?

In [46]:
np.empty((2,3))

Out[46]:

array([[1., 2., 3.],
       [4., 5., 6.]])
In [47]:
np.eye?

In [51]:
np.eye(5, dtype='int')  ### 默认生成5行5列的数组, 并且数组的对角线默认是1

Out[51]:

array([[1, 0, 0, 0, 0],
       [0, 1, 0, 0, 0],
       [0, 0, 1, 0, 0],
       [0, 0, 0, 1, 0],
       [0, 0, 0, 0, 1]])

ndarray的索引

一维数组
In [56]:
arr

Out[56]:

array([1, 2, 3, 4, 5, 6])
In [58]:
#### 在列表中怎么通过索引获取值,在这里也是一样的
arr[2]

Out[58]:

3

二维数组

In [59]:
arr2

Out[59]:

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
In [61]:
arr2[0,2]   ##### 逗号前面是行索引, 逗号后面是列索引

Out[61]:

3

切片

一维数组

In [62]:
arr

Out[62]:

array([1, 2, 3, 4, 5, 6])
In [76]:
arr[0:-1]

Out[76]:

array([1, 2, 3, 4, 5])

二维数组

In [65]:
arr2

Out[65]:

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
In [74]:
arr2[:,1:3]  ##### 和索引的使用方法一致, 逗号前面是行索引 , 后面是列索引

Out[74]:

array([[2, 3],
       [7, 8]])
In [75]:
arr2[:, :]

Out[75]:

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

布尔型索引

In [77]:
###查询arr中大于4的所有的数据
arr

Out[77]:

array([1, 2, 3, 4, 5, 6])
In [78]:
###查询arr中大于4的所有的数据
arr > 4

Out[78]:

array([False, False, False, False,  True,  True])
In [79]:
arr[arr>4]   ##### 布尔型索引

Out[79]:

array([5, 6])
In [80]:
arr2

Out[80]:

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
In [82]:
arr2[arr2 > 8]

Out[82]:

array([ 9, 10])

通用函数

In [84]:
a = -4
np.abs(a)

Out[84]:

4
In [85]:
np.ceil(4.3)  #### 向上取整

Out[85]:

5.0
In [86]:
np.floor(4.6)  #### 向下取整

Out[86]:

4.0
In [87]:
np.rint(4.6)

Out[87]:

5.0
In [88]:
np.rint(4.4)

Out[88]:

4.0
In [89]:
np.modf(5.6)

Out[89]:

(0.5999999999999996, 5.0)
In [90]:
## isnan  ### 判断某一个数是否是 nan === not a number (不是一个数)
np.nan

Out[90]:

nan
In [91]:
arr

Out[91]:

array([1, 2, 3, 4, 5, 6])
In [94]:
np.sum(arr)

Out[94]:

21
In [95]:
np.cumsum(arr)  #### 累加

Out[95]:

array([ 1,  3,  6, 10, 15, 21])
In [96]:
arr

Out[96]:

array([1, 2, 3, 4, 5, 6])
In [97]:
np.min(arr)

Out[97]:

1
In [98]:
np.max(arr)

Out[98]:

6
In [99]:
np.argmin(arr)

Out[99]:

0

随机数

In [100]:
np.random.rand(10)  ### 随机生成10个0-1之间的数字

Out[100]:

array([0.56187207, 0.79693148, 0.83056134, 0.97434263, 0.08407437,
       0.3006474 , 0.56696281, 0.95745467, 0.75604117, 0.25491663])
In [106]:
np.random.randint(5)

Out[106]:

3
In [109]:
np.random.choice(5,3)  ### 随机生成3个 0-5 之间的数

Out[109]:

array([4, 4, 0])
In [110]:
np.random.shuffle?

In [111]:
arr

Out[111]:

array([1, 2, 3, 4, 5, 6])
In [112]:
np.random.shuffle(arr)   #### 打乱给定的一个数组

In [113]:
arr

Out[113]:

array([4, 1, 2, 6, 3, 5])
In [114]:
arr

Out[114]:

array([4, 1, 2, 6, 3, 5])
In [119]:
arr.reshape(3,2)   #### 改变一维数组的形状成二维数组

Out[119]:

array([[4, 1],
       [2, 6],
       [3, 5]])
In [ ]:
 

</div> </div> </div> </body>

numpy模块第二部分:numpy模块 03

posted on 2020-03-03 18:51  jueyuanfengsheng  阅读(163)  评论(0)    收藏  举报