做微商去哪个网站推广,想开一个做网站的公司,龙岗网站设计市场,自己开外包公司怎么接项目人有一种天生的、难以遏制的欲望#xff0c;那就是在理解之前就评判。 -- 米兰昆德拉 多维数组 1. 一维数组只有行#xff0c;二维数组相比一维数组多了列这个维度#xff0c;而三维数组则类似多个二维数组堆叠在一起#xff0c;形如一个立方体。 二维数组的创建 1. 二… 人有一种天生的、难以遏制的欲望那就是在理解之前就评判。 -- 米兰·昆德拉 多维数组 1. 一维数组只有行二维数组相比一维数组多了列这个维度而三维数组则类似多个二维数组堆叠在一起形如一个立方体。 二维数组的创建 1. 二维数组相当于单层的嵌套列表。并且我们可以将单层嵌套列表传入 np.array() 方法创建一个二维数组。 2. ones() 和 zeros() 方法同样也能快速创建元素全为 1 和 0 的二维数组。与之前的区别在于创建二维数组要传入一个包含行和列信息的元组。 3. 更多维的数组的创建只要传入嵌套层数更多的列表即可。 import numpy as nplist_1[[1, 2], [3, 4]]
print(list_1)
# [[1, 2], [3, 4]]list_2np.array([[1, 2], [3, 4]])
print(list_2)
# [[1 2]
# [3 4]]
import numpy as np
list_1np.ones((3,4)) # 3行4列
print(list_1)#[[1. 1. 1. 1.]
# [1. 1. 1. 1.]
# [1. 1. 1. 1.]]
多维数组的性质 1. ndim多维数组的维度个数。例如二维数组的 ndim 为 2 2. shape多维数组的形状。对于 m 行和 n 列的数组它的 shape 将是 (m,n)。因此shape 元组的长度元素个数就是 ndim 的值 3. size多维数组中所有元素的个数。shape 元组中每个元素的乘积就是 size 的值 4. dtype多维数组中元素的类型。 data np.array([[1, 2, 3], [4, 5, 6]])print(ndim:, data.ndim)
print(shape:, data.shape)
print(size:, data.size)
print(dtype:, data.dtype)# ndim: 2
# shape: (2, 3)
# size: 6
# dtype: int64 二维数组的加减乘除 1. 二维数组间的加减乘除和一维数组间的并无大致也是对应位置的元素进行计算。 2. 维度一样的数组间可以进行计算的条件是形状shape一样形状不一样的数组元素无法一一对应因此无法计算导致报错。 3. 广播原则先补齐行轴再往列轴方向进行复制。 二维数组的通用方法 1. 二维数组的通用方法和一维数组的通用方法的基本用法类似只是多了一个维度的数据。 2. 二维数组不仅可以对所有数据进行计算还可以针对某个维度上的数据进行计算。 3. 这里就要引入一个概念——轴axis。轴和维度的概念是类似的一维数组有 1 个轴二维数组有 2 个轴三维数组有 3 个轴等等。 import numpy as np
data np.array([[1, 2], [5, 3], [4, 6]])# 不指定 axis
print(data.max())
# 输出6# axis0
print(data.max(axis0))
# 输出[5 6]# axis1
print(data.max(axis1))
# 输出[2 5 6] 二维数组的索引和分片 1. 二维数组的索引和分片同样和一维数组类似只是在行索引的基础上再加上列索引。 2. 形如 data[m,n]其中 data 是二维数组m 是行索引或分片n 是列索引或分片。 3. 如果省略第二个参数 n 的话表示获取所有列data[0] 就表示获取整个第一行相当于 data[0, :]。 data np.array([[1, 2], [3, 4], [5, 6]])print(data[0, 1])
# 2print(data[:, 0])
# [1 3 5]print(data[1:3])
# [[3 4]
# [5 6]] 布尔索引 1. 布尔索引顾名思义就是用布尔值作为索引去获取需要的元素。 2. and 改用 or 改用 |not 改用 ~并且每个条件要用括号括起来。 data np.array([[1, 2], [3, 4], [5, 6]])
print(data[data 3])
# 输出[4 5 6]# 大于 3 或者不小于 2即大于等于 2
print(data[(data 3) | ~(data 2)])
# 输出[2 3 4 5 6] 实用方法
arange() 方法 1. numpy 中的 arange() 方法和 Python 中的 rang() 用法类似不同之处在于 arange() 方法生成的是数组而 rang() 方法生成的是 rang 类型的序列。 # 生成 1-9 的数组
print(np.arange(1, 10))
# 输出[1 2 3 4 5 6 7 8 9]# 生成 0-9 的数组
print(np.arange(10))
# 输出[0 1 2 3 4 5 6 7 8 9]# 生成 1-9 的数组步长为 2
print(np.arange(1, 10, 2))
# 输出[1 3 5 7 9] 随机方法 1. Python 中有 random 模块来生成随机数numpy 针对多维数组也集成了 random 模块并且更加方便好用。 2. 这里只介绍其中的 rand() 方法和 randint() 方法更多方法大家可以在需要时查询使用。 3. numpy 中的 np.random.rand() 方法和 Python 中 random.rand() 方法类似都是生成 [0,1) 之间的随机小数。 4. 不同的是numpy 中的 np.random.rand() 方法可以生成多个 [0,1) 之间的随机小数只需我们传入要生成的随机数组的形状shape即可。 5. 同理numpy 中的 np.random.randint() 方法和 Python 中的 random.randint() 类似. 6. 不同之处在于random.randint() 生成的是 [m,n] 之间的整数而 np.random.randint() 生成的是 [m,n) 之间的整数。 # 不传参数时
print(np.random.rand())
# 输出0.1392571183916036# 传入一个参数时
print(np.random.rand(3))
# 输出[0.7987698 0.52115291 0.70452156]# 传入多个参数时
print(np.random.rand(2, 3))
# 输出
# [[0.08539006 0.97878203 0.23976172]
# [0.34301963 0.48388704 0.63304024]]
# 不传入形状时
print(np.random.randint(0, 5))
# 输出3# 形状为一维数组时
print(np.random.randint(0, 5, 3))
# 输出[4 0 1]# 形状为二维数组时
print(np.random.randint(0, 5, (2, 3)))
# 输出
# [[0 2 1]
# [4 2 0]]
genfromtxt() 方法 1. genfromtxt() 方法用于文件的读取。 2. genfromtxt() 方法常用的参数有两个分别是数据源和分隔符。 3. 第一个参数是数据源可以是本地文件的路径也可以是网络文件的地址。 4. 第二个delimiter 参数用于指定分隔符CSV 文件一般是用逗号作为分隔符当遇到其他符号分隔的文件时用 delimiter 参数进行指定即可。 5. genfromtxt() 方法的返回值是一个多维数组。 import numpy as np
datanp.genfromtxt(data.csv,delimiter,)
print(data)
致谢 感谢您花时间阅读这篇文章如果您对本文有任何疑问、建议或是想要分享您的看法请不要犹豫在评论区留下您的宝贵意见。每一次互动都是我前进的动力您的支持是我最大的鼓励。期待与您的交流让我们共同成长探索技术世界的无限可能