# 创建数组

# 一维数组

一维数组
1
2
3
import numpy as np  
data = np.array([1, 2, 3, 4])
print(data)

输出 [1 2 3 4]

# 二维数组(矩阵)

二维数组
1
2
3
import numpy as np  
data = np.array([[1, 2, 3, 4], [4, 5, 6, 7]])
print(data)

输出:
1
2
[[1 2 3 4]
[4 5 6 7]]

# 全 0 数组

shapeshape 属性代表形状, shape(2, 5) 就代表创建 2255 列的全零数组

全0数组
1
2
3
import numpy as np  

data = np.zeros(shape=(5, 3))

# 全 1 数组

全1数组
1
2
3
import numpy as np  

data = np.ones(shape=(5, 3))

# 全空数组

创建出来的全空数组中的数据都是无限小的、无限接近于 00 但不是 00

全空数组
1
2
3
import numpy as np

data=np.empty(shape=(5,3))

# 有连续序列的数组

连续序列数组
1
2
3
import numpy as np
data = np.arange(10, 16, 2) # 10-16的数据,步长为2
print(data) # 输出 [10 12 14]

# 有连续间隔的数组

也可以称为线性等分向量,在一个指定区间内按照指定的步长,将区间均等分,生成的是一个线段类型的数组。生成的线性间隔数据中,是有把区间的两端加进去的

连续间隔数组
1
2
3
import numpy as np

data= np.linspace(1, 10, 20) # 开始端1,结束端10,且分割成20个数据,生成线段

# 随机数组

数据数值是 (0,1)(0, 1) 之间的实数

随机数组
1
2
import numpy as np
data = np.random.rand(3, 4)

自定义数据范围
随机数组
1
2
import numpy as np
data=np.random.randint(2, 5,size=(4,5)); # 每个元素的值都在 2 ~ 5 之间

# 改变数组形状

例如:你本来有一个 aabb 列的数组,你可以把它改成为 ccdd 列的数组(前提是: ab = cd
注意:因为数组中元素是没有改变的,所以重塑数组指定的尺寸大小是否和原本的尺寸大小一样,大一点和小一点都会报错。reshapereshape 本质就是原本数组中的元素按顺序展开来,然后依次填入新定义的尺寸中去。注意 reshapereshape 后面填的是元组数据类型

改变数组形状
1
2
3
4
5
6
7
8
9
10
import numpy as np
data1=[1, 2, 3, 4, 5]
data2=[1, 2, 3, 4, 5]
data=np.array([data1, data2])
print("改之前的数组形状为:")
print(data.shape) # 输出 (2, 5)

data=data.reshape((5, 2))
print("改之后的数组形状为:")
print(data.shape) # 输出 (5, 2)

# 数组转置

转置
1
2
3
4
5
6
7
8
import numpy as np
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
data_array = np.array(data)
print("没有转置数组之前数组为:")
print(data)

print("转置数组之后数组为:")
print(data_array.T)

# 数组显示操作

# 数组维度 ndim

data.ndim :这个数组是几乘几 ...... 乘几的

# 数组形状

data.shape :可以理解成各个方向的维度

# 元素个数

data.size :字面意思

# 数据类型

data.dtype

# 数组运算

# 加法

加法
1
2
3
4
import numpy as np
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
result = array1 + array2

# 乘法

乘法
1
2
3
4
import numpy as np
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
result = array1 * array2

# 数组数据统计

数据统计
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
28
29
30
31
32
33
import numpy as np
data = np.random.rand(5, 6)

# 平均数
ave = np.mean(data, # 算那个数组
axis=1, # 沿哪个轴
dtype=int # 返回类型,默认为 float64
# out= 将结果存储在指定的数组中
)

# 中位数
# np.median(data, axis=None, out=None)

# 标准差
# np.std(data, axis=None, dtype=None, out=None)

# 方差
# np.var(data, axis=None, dtype=None, out=None)

# 最小值
# np.min(data, axis=None, out=None)

# 最大值
# np.max(data, axis=None, out=None)

# 元素和
# np.sum(data, axis=None, out=None)

# 元素积
# np.prod(data, axis=None, out=None)

# 累积和
# np.cumsum(data, axis=None, dtype=None, out=None)

# 数组切片

# 一维数组切片

下标从 00 开始,左闭右开

一维数组切片
1
2
3
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[1 : 4]) # 输出 [2 3 4]

# 多维数组切片

一维一维地来就行

# 行切片

# 列切片

# 数组堆叠

# 垂直堆叠

垂直堆叠
1
stacked = np.vstack((array1, array2))

# 水平堆叠

水平堆叠
1
stacked = np.hstack((array1, array2))

# 保存和加载数组

# 保存数组到文件

保存数组到文件
1
np.save('my_array.npy', data)

# 加载数组

加载数组
1
loaded_data = np.load('my_array.npy')