python学习笔记——Numpy(1)

Numpy数组基础

创建Numpy数组的标准做法

  1. 用np.array从python中的列表创建数组

import numpy as np
list1 = [1, 2, 3, 4, 5]
 list2 = [2, 3, 4, 5, 6]
 np.array(list)#np.array 中的数据必须包含的是同一数据类型
 #dtype关键字
 np.array(list, dtype='float32')
 #创建多维数组
 np.array([list1, list2])#内层的列表被当作行
  1. 从头创建数组

#创建3*5的浮点数数组
np.full((3, 5), 1, dtype='float32')
#值都是1

#创建0到20,步长为2的数组
np.arange(0, 20, 2)

# 创建一个5个元素的数组,这5个数均匀地分配到0~1 
np.linspace(0, 1, 5)

# 创建一个3×3的、在0~1均匀分布的随机数组成的数组
np.random.random((3, 3))

# 创建一个3×3的、均值为0、方差为1的
# 正态分布的随机数数组
np.random.normal(0, 1, (3, 3)) 

# 创建一个3×3的、[0, 10)区间的随机整型数组
np.random.randint(0, 10, (3, 3))

# 创建一个3×3的单位矩阵
np.eye(3)

# 创建一个由3个整型数组成的未初始化的数组
# 数组的值是内存空间中的任意值
np.empty(3)

数组的基本操作

  1. 获取和修改数组(与列表相似)

x1 = np.linspace(1, 10, 5)
x2 = np.array([[1, 2, 3],[4, 5, 6]])
x3 = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
print(f'{x1[1]}\t{x2[-1, 2]}\t{x3[1, 0]}')
#或x3[1][0]
  1. 数组切片:获取子数组

x[start:stop:step], 与python的列表切片相同

数组的操作是以列表为一个维度,每嵌套一个列表就会多以个维度,

在切片操作下,是对列表进行切片,切片之后得到一个新的列表取代原来队列在数组的位置

1.一维的数组

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 array1 = np.array(list)
 array2 =  array1[0:5]
 print(f'{array2}')
 ```
2.多维数组的切片
 ```python
 x = np.array[[1, 2, 3],[4, 5, 6],[7, 8, 9]]
 x_sub = x[:1,:1]
 ```
3.获取数组的行或列(采用切片与索引的结合)
  这样就可以获得一个一维数组,而不是多维数组
  ```python
 x = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
 line1 = x[:,0]#第一列
 print(f'{line1}')
 line2 = x[0,:]
 print(f'{line2}')#第一行
 ```
3. 数组副本
1. 在切片操作下,所返回的是数组数据的视图而不是副本,也就是说,通过切片所得到的子数组是正本的一部分,改变子数组,整个数组都会改变
2. 通过copy()函数,可以将子数组变为副本
```python
x_sub_copy = x_sub.copy()
  1. 数组的变形

  1. 通过reshape()将一维的数组变形为所需的数组(大小要相同)

x = np.linspace(0, 10, 9).reshape((3,3))
print(x)
  1. 通过切片+np.newaxis将一维数组变换为列或行矩阵,该函数可以在原来数组的基础上,在加一个维度,加的维度(轴)取决于newaxis的位置,比如(3,3)的矩阵,如果第二个写入,就会变成(3,1,3)的矩阵

x = np.array([1, 2, 3])#1*3
x1 = x[np.newaxis,:]#1*3
x2 = x[:,np.newaxis]#3*1
print(x1)
print(x2)
  1. 数组的拼接和分裂

  1. 数组的拼接

  1. 通用

np.concatenate([x,y,z],axies = 0)
"""将x,y,z按的一个轴进行拼接(轴的索引是从0开始)
比如(1,2,3) (2,2,3)两个3维的数组按第一个轴进行拼接,会得到(3,2,3)这个3维数组
  1. 固定维度的拼接

  1. np.vstack([x,y])->垂直栈

  1. np.hstack([x,y])->水平栈

  1. np.dstack([x,y])->第三个维度

  1. 数组的分裂

  1. 通用

import numpy as np
"""split(a,[1, 2],axis = 1)表示在a矩阵中第二个轴序号为1和序号为2为分割点进行分裂,如果只有一个分割点,直接写序号就行
a = np.array([[1, 2, 3],
[1, 2, 5],
[4, 6, 7]])
print (np.split(a, [2, 3],axis = 0))
print (np.split(a, [1, 2],axis = 1))
输出:
[array([[1, 2, 3],
 [1, 2, 5]]), array([[4, 6, 7]]), array([], shape=(0, 3), dtype=int32)]
[array([[1],
        [1],
        [4]]), array([[2],
        [2],
        [6]]), array([[3],
        [5],
        [7]])]
  1. 固定维度

  1. np.vsplit([x,y])->垂直栈

  1. np.hsplit([x,y])->水平栈

  1. np.dsplit([x,y])->第三个维度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值