Numpy学习笔记(一)

numpy介绍

  numpy属于python的一个数学库,相比于Python做数值计算速度更快.也可以使用numpy进行向量和矩阵计算.

1.ndarrays数据类型的创建

import numpy as np

# 索引以0开始
a = np.array([0, 1, 2, 3, 4])
b = np.array((0, 1, 2, 3, 4))

# 创建生成的序列 c
= np.arange( 10, 30, 5 ) # 10 到 30 的数值,不包含30,递增为5
# 产生均匀分布的值构成的数组
d = np.linspace(0, 2*np.pi, 5) # 在 0--2*np.pi 之间均匀选取5个数值
# 生成占位符
e = np.zeros((3,4))  # 生成3*4的二维数组,每个元素都是0,默认是float64
f = np.ones((3,4))   # 生成3*4的二维数组,每个元素都是1,默认是float64
g = np.empty((3,4)) # 生成3*4的二维数组,每个元素都是随机产生呢过的,默认是float64 ,添加dtype参数设置元素类型

# 生成随机数
h = np.random.random((3,4)) # 生成3*4的二维随机数 print(a) print(b) print(c) print(d) # a, b, c, d 的类型是ndarrays,包括数组、矩阵、张量. # 矩阵的创建 # 索引以0开始 a = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33, 34, 35]]) print(a[2, 4]) # 输出 25 # 三维张量的创建 3*3*3 b = np.array([[ [1, 2, 3], [4, 5, 6], [7, 8, 9]], [ [10, 11, 12], [13, 14, 15], [16, 17, 18]], [ [19, 20, 21], [22, 23, 24], [25, 26, 27]]]) print(b[1, 1, 1]) # 输出 14

 2、ndarrays的切片

a = np.array([[11, 12, 13, 14, 15, 41],
              [16, 17, 18, 19, 20, 42],
              [21, 22, 23, 24, 25, 43],
              [26, 27, 28, 29, 30, 44],
              [31, 32, 33, 34, 35, 45]])

a[ : :-1]      # 一维逆置,二维行(第一维)逆置
print(a[0, 1:4])    # 行下标为0,列下标1-4,第一行,第2,3,4个数值
print(a[1:4, 0])    # 行下标为1-4,列下标为0,第2,3,4行,第1列数值
print(a[::2, ::2])  # 行下标从0开始,以索引2为增量,列下标从0开始,以索引2为增量
print(a[:, 1])      # 所有的行中的第二列,因此只是第二列。

# 当提供比轴数更少的索引时,缺失的索引被认为是一个完整切片 :
>>> b[-1]                                  # 相似于 b[-1,:],如果是多维,后面的轴数被认为是完整索引。
array([40, 41, 42, 43])

# 三个点( ... )表示产生完整索引元组所需的冒号,如果 x 是rank为的5数组(即,它具有5个轴),例如:
  • x[1,2,...] 等于 x[1,2,:,:,:]。    # 省略后面
  • x[...,3] 等效于 x[:,:,:,:,3]。    # 省略前面
  • x[4,...,5,:] 等效于 x[4,:,:,5,:]   # 省略中间

备注:以逗号分割维度

3、ndarrays的属性

print(type(a))          # type()输出变量的类型,<class 'numpy.ndarray'>
print(a.dtype)          # 输出a中元素的类型,int64
print(a.size)           # 输出a中包含元素的个数,25
print(a.shape)          # a的形状,每个维度具有的元素个数,2
print(a.itemsize)       # 每个元素占用了多少个字节,8字节(64/8)
print(a.ndim)           # a的维度是多少,2
print(a.nbytes)         # a有多少个字节,8*25

 4、基础操作

a = np.arange(25)   # 产生25个数值,0--24
a = a.reshape((5, 5))   # 改成5*5的矩阵,如果不支持,报错:cannot reshape array of size × into shape (×,×)

b = np.array([10, 62, 1, 14, 2,
              56, 79, 2, 1, 45,
              4, 92, 5, 55, 63,
              43, 35, 6, 53, 24,
              56, 3, 56, 44, 78])
b = b.reshape((5, 5))
a.sum()   # 所有元素求和
print(a) print(b) print(a + b) # a和b对应元素相加 print(a - b) # a和b对应元素相减 print(a * b) # a和b对应元素相乘 print(a / b) # a和b对应元素相除(浮点数) print(a ** 2) # a中所有元素的2次方 print(a < b) # a和b对应元素做比较,结果为Boolean值 print(a > b) # a和b对应元素做比较,结果为Boolean值
print(a.dot(b)) # a和b乘法,新矩阵第一个元素是,a的第一行和b的第一列对应元素相乘再相加,后面元素依次类推。

 5、迭代

# for ... in ...       多维数组是相对于第一个轴完成的

>>> for row in b:
...     print(row)        # 是对b第一轴的迭代,如果b是二维数组输出的是,每行数据.


#  flat 属性       迭代每个元素

>>> for element in b.flat:
...     print(element)     # 输出的是每个元素

  

原文地址:https://www.cnblogs.com/smartmsl/p/10561820.html