Python 中经常会使用 Numpy 库来做科学计算。Numpy 的本质就是创建出多维数组,可使用 Numpy 提供的各种科学计算方法对数组进行计算。
多维数组的创建
import numpy as np
# 创建一维数组
arr1 = np.array([1, 2, 3])
# 创建二维数组
arr2 = np.array([[1, 2], [3, 4]])
通过 Numpy 的 array() 方法,就可以创建出多维数组。这样的数组也称之为 Numpy 对象,每个 Numpy 对象都有两个属性,一个是 shape ,另一个是 dtype 。
访问 Numpy 的 shape 属性可以获得数组的形状,示例如下:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
arr3 = np.array([[1], [2], [3]])
arr4 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr1.shape)
# (3,)
print(arr2.shape)
# (2, 3)
print(arr3.shape)
# (3, 1)
print(arr4.shape)
# (2, 2)
根据结果可知,所谓数组的形状,就是指每一维元素的个数。以 arr2 为例,这是一个二维数组,它的第一维度(行)的元素个数为 2,第二维度(列)的元素个数为 3,所以结果就是 (2, 3) 。
访问 Numpy 的 dtype 属性可以获得数组的类型,示例如下:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3.2])
arr3 = np.array(['a', 5.0, 3])
arr4 = np.array([['a', 'b'], [5, 6]])
print(arr1.dtype)
# int32
print(arr2.dtype)
# float64
print(arr3.dtype)
# <U3
print(arr4.dtype)
# <U1
根据结果可知,当数组中只有整数和浮点数时,Numpy 会将整数全部转为浮点数 。当数组中存在字符串时,Numpy 会将所有元素全部转为字符串。其中,<U3、<U1 表示的就是字符串。
多维数组的访问
import numpy as np
arr = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
print(arr[0])
# [1, 2, 3]
print(arr[1][2])
# 6
print(arr[:, 1])
# [2, 5, 8]
print(arr[1, :])
# [4, 5, 6]
print(arr[:1])
# [[1, 2, 3],
[4, 5, 6]]
print(arr[1:])
# [[4, 5, 6],
[7, 8, 9]]
print(arr[:, :3:2])
# [[1, 3],
[4, 6],
[7, 9]]
对于二维数组 arr 而言,各访问方式的含义如下:
- arr[0] 。访问数组的 第一行。
- arr[1][2] 。访问数组的 第二行,第三列。
- arr[:, 1] 。访问数组的 所有行,第二列。
- arr[1, :] 。访问数组的 第二行,所有列。等价于 arr[1] 。
- arr[:1] 。访问数组的 第 1 行 到 第 2 行。
- arr[1:] 。访问数组的 第 2 行 到 最后一行。
- arr[:, :3:2] 。访问数组的 所有行,第 1 列 到 最后一列,列步长为 2(步长默认为1)。
对于 n 维数组来说,访问方式如下:
arr[第一维度位置, 第二维度位置, 第三维度位置, …, 第n维度位置]
多维数组的形状处理
形状变换
Numpy 有两个较为相近的形状变换方法,分别是 reshape() 和 resize() 。
使用示例及区别如下:
import numpy as np
arr = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
print(arr.shape)
# (3, 3)
print(arr.reshape(1, 9))
# [[1 2 3 4 5 6 7 8 9]]
print(arr.shape)
# (3, 3)
print(arr.resize(1, 9))
# None
print(arr.shape)
# (1, 9)
根据结果得出的区别如下表:
| 是否改变原数组 | 返回值 | |
|---|---|---|
| reshape() | 否 | 处理之后的新数组 |
| resize() | 是 | None |
降维
未完。。。
最后
以上就是迷路唇彩最近收集整理的关于人工智能系列3 Numpy的科学计算多维数组的创建多维数组的访问多维数组的形状处理降维的全部内容,更多相关人工智能系列3内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复