In[12]: # 创建一个长度为10的数组, 数组的值都是0
np.zeros(10, dtype=int)
Out[12]: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
In[13]: # 创建一个3×5的浮点型数组, 数组的值都是1
np.ones((3, 5), dtype=float)
Out[13]: array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]])
In[14]: # 创建一个3×5的浮点型数组, 数组的值都是3.14
np.full((3, 5), 3.14)
Out[14]: array([[ 3.14, 3.14, 3.14, 3.14, 3.14],
[ 3.14, 3.14, 3.14, 3.14, 3.14],
[ 3.14, 3.14, 3.14, 3.14, 3.14]])

In[15]: # 创建一个3×5的浮点型数组, 数组的值是一个线性序列
# 0开始, 到20结束, 步长为2
# (它和内置的range()函数类似)
np.arange(0, 20, 2)
Out[15]: array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
In[16]: # 创建一个5个元素的数组, 这5个数均匀地分配到0~1
np.linspace(0, 1, 5)
Out[16]: array([ 0. , 0.25, 0.5 , 0.75, 1. ])
In[17]: # 创建一个3×3的、 在0~1均匀分布的随机数组成的数组
np.random.random((3, 3))
Out[17]: array([[ 0.99844933, 0.52183819, 0.22421193],
[ 0.08007488, 0.45429293, 0.20941444],
[ 0.14360941, 0.96910973, 0.946117 ]])
In[18]: # 创建一个3×3的、 均值为0、 方差为1
# 正态分布的随机数数组
np.random.normal(0, 1, (3, 3))
Out[18]: array([[ 1.51772646, 0.39614948, -0.10634696],
[ 0.25671348, 0.00732722, 0.37783601],
[ 0.68446945, 0.15926039, -0.70744073]])
In[19]: # 创建一个3×3的、 [0, 10)区间的随机整型数组
np.random.randint(0, 10, (3, 3))
Out[19]: array([[2, 3, 4],
[5, 7, 8],
[0, 5, 0]])
In[20]: # 创建一个3×3的单位矩阵
np.eye(3)
Out[20]: array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
In[21]: # 创建一个由3个整型数组成的未初始化的数组
# 数组的值是内存空间中的任意值
np.empty(3)
Out[21]: array([ 1., 1., 1.])

2-1NumPy标准数据类型

数据类型 描述
bool_ 布尔值(真、 True 或假、 False) , 用一个字节存储
int_ 默认整型(类似于 C 语言中的 long, 通常情况下是 int64 int32
intc C 语言的 int 相同(通常是 int32 int64
intp 用作索引的整型(和 C 语言的 ssize_t 相同, 通常情况下是 int32 int64
int8 字节(byte, 范围从–128 127
int16 整型(范围从–32768 32767
int32 整型(范围从–2147483648 2147483647
int64 整型(范围从–9223372036854775808 9223372036854775807
uint8 无符号整型(范围从 0 255
uint16 无符号整型(范围从 0 65535
uint32 无符号整型(范围从 0 4294967295
uint64 无符号整型(范围从 0 18446744073709551615
float_ float64 的简化形式
float16 半精度浮点型: 符号比特位, 5 比特位指数(exponent) , 10 比特位尾数(mantissa
float32 单精度浮点型: 符号比特位, 8 比特位指数, 23 比特位尾数
float64 双精度浮点型: 符号比特位, 11 比特位指数, 52 比特位尾数
complex_ complex128 的简化形式
complex64 复数, 由两个 32 位浮点数表示
complex128 复数, 由两个 64 位浮点数表示
1 In[1]: import numpy as np
2 np.random.seed(0) # 设置随机数种子
3 x1 = np.random.randint(10, size=6) # 一维数组
4 x2 = np.random.randint(10, size=(3, 4)) # 二维数组
5 x3 = np.random.randint(10, size=(3, 4, 5)) # 三维数组

每个数组有 nidm(数组的维度) 、 shape(数组每个维度的大小) 和 size(数组的总大小) 属性。

In[5]: x1
Out[5]: array([5, 0, 3, 3, 7, 9])
In[6]: x1[0]
Out[6]: 5
In[7]: x1[4]
Out[7]: 7

在多维数组中, 可以用逗号分隔的索引元组获取元素

NumPy 切片语法和 Python 列表的标准切片语法相同。
x[start:stop:step]

 1 In[16]: x = np.arang
 2 e(10)
 3 x
 4 Out[16]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 5 In[17]: x[:5] # 前五个元素
 6 Out[17]: array([0, 1, 2, 3, 4])
 7 In[18]: x[5:] # 索引五之后的元素
 8 Out[18]: array([5, 6, 7, 8, 9])
 9 In[19]: x[4:7] # 中间的子数组
10 Out[19]: array([4, 5, 6])
1 In[20]: x[::2] # 每隔一个元素
2 Out[20]: array([0, 2, 4, 6, 8])
3 In[21]: x[1::2] # 每隔一个元素, 从索引1开始
4 Out[21]: array([1, 3, 5, 7, 9])

In[22]: x[::-1] # 所有元素, 逆序的
Out[22]: array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
In[23]: x[5::-2] # 从索引5开始每隔一个元素逆序
Out[23]: array([5, 3, 1])

In[24]: x2
Out[24]: array([[12, 5, 2, 4],
[ 7, 6, 8, 8],
[ 1, 6, 7, 7]])
In[25]: x2[:2, :3] # 两行, 三列
Out[25]: array([[12, 5, 2],
[ 7, 6, 8]])
In[26]: x2[:3, ::2] # 所有行, 每隔一列
Out[26]: array([[12, 2],
[ 7, 8],
[ 1, 7]])

另一个有用的操作类型是数组的变形。 数组变形最灵活的实现方式是通过 reshape() 函数来实现。 例如,
如果你希望将数字 1~9 放入一个 3×3 的矩阵中, 可以采用如下方法:

1 In[38]: grid = np.arange(1, 10).reshape((3, 3))
2 print(grid)
3 [[1 2 3]
4 [4 5 6]
5 [7 8 9]]

拼接或连接 NumPy 中的两个数组主要由 np.concatenatenp.vstack np.hstack 例程实
现。 np.concatenate 将数组元组或数组列表作为第一个参数,np.concatenate 也可以用于二维数组的拼接:
如下所示:

1 In[43]: x = np.array([1, 2, 3])
2 y = np.array([3, 2, 1])
3 np.concatenate([x, y])
4 Out[43]: array([1, 2, 3, 3, 2, 1])
5 In[44]: z = [99, 99, 99]
6 print(np.concatenate([x, y, z]))
7 [ 1 2 3 3 2 1 99 99 9
In[45]: grid = np.array([[1, 2, 3],
[4, 5, 6]])
In[46]: # 沿着第一个轴拼接
np.concatenate([grid, grid])
Out[46]: array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3],
[4, 5, 6]])

版权声明:本文为BaoBobbyZhang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/BaoBobbyZhang/p/12146491.html