NumPy(Numerical Python)是Python中最基础、最重要的科学计算库之一,提供了高性能的多维数组(ndarray)对象和大量数学函数,是许多数据科学、机器学习库(如Pandas、SciPy、TensorFlow等)的基础依赖。
1. 创建一个numpy里面的一维数组
import numpy as np
### 通过array方法创建一个ndarray
array1 = np.array([1, 2, 3, 4, 5])
print(array1)
print(type(array1))
### 通过arange方法创建一个ndaaray
# 第一个参数是起始值,第二个参数是最大值,第三个参数是步长
array2 = np.arange(1, 10, 2)
print(array2)
print(type(array2))
# 一个参数是最大值,起始值是0,步长是1
array3 = np.arange(5)
print(array3)
print(type(array3))
# 第一个参数是起始值,第二个参数是最大值,步长默认是1
array4 = np.arange(2, 7)
print(array4)
print(type(array4))

2. 数组的算术运算
import numpy as np
# ndarray与一个整数的算术运算,会把数组里面每一个元素都与这个整数进行运算
array1 = np.array([1, 2, 3, 4, 5])
array1 += 1
print(array1)
array1 *= 2
print(array1)
array1 = array1 / 2
print(array1)
print('-----------------------------')
# 一个ndarray与另一个ndarray之间的算术运算,会把两个数组对应位置的元素进行运算
array1 = np.arange(1, 6)
array2 = np.arange(6, 11)
print(array1)
print(array2)
array3 = array1 + array2
print(array3)
# 如果两个数组里面的元素个数不一致,会报错
# ValueError: operands could not be broadcast together with shapes (5,) (10,)
array1 = np.arange(5)
array2 = np.arange(10)
array3 = array1 + array2
print(array3)

3. 多维数组
3.1 多维数组要求数组元素的形状(shape)一致
以下几种情况都会报错:
- 元素个数不匹配
import numpy as np
array1 = np.array([[1, 2, 3, 4, 5], [6, 7, 8]])
print(array1.shape)

- 元素类型不匹配
array1 = np.array([[1, 2, 3, 4, 5], [6, 7, 8,9,[1]]])
print(array1)

以下情况能创建成功:
- 元素个数以及类型都一致
array1 = np.array([[1,2], [4,6]])
print(array1)
array2 = np.array([['hi','hello'], ['mary','mark']])
print(array2)
- 元素个数一致,类型之间可以相互转换, 会自动的向下进行转换
array1 = np.array([[1,2], [4,6.0]])
print(array1)

3.2 使用 dtype=object 强制存储不同形状数据,但会失去 NumPy 的优化优势
array = np.array([[1, 2], [3, 4, 5]], dtype=object)
print(array)
# 这种操作会报错,从打印的信息看,创建出来的是一维数组,数组里面的元素是list
array += 1

4. 数组的属性
list = [1,2,3,4,5]
array1 = np.array(list)
array2 = np.array([[4,5,6], [7,8,9]])
# 元素的数据类型 int64
print(array1.dtype)
print(array2.dtype)
# 元素的数据类型占用内存的字节数
print(array1.itemsize)
print(array2.itemsize)
# 数组的形状
print(array1.shape)
print(array2.shape)
# 数组中元素的个数
print(array1.size)
print(array2.size)
# 数组的维度
print(array1.ndim)
print(array2.ndim)


被折叠的 条评论
为什么被折叠?



