Numpy Array基础知识
Numpy是Python中的一个高性能科学计算库,它主要用于处理各种数据结构,尤其适合于处理大量数据的科学运算和数据分析。Numpy最重要的数据结构是Numpy Array,它是一个n维数组对象,包含了同一数据类型的元素和基于该数据类型对数组的索引和分片等高效的操作。
阅读更多:Numpy 教程
Numpy Array创建方式
我们可以用不同的方式来创建Numpy Array:
1. 从Python列表或元组创建
我们可以用Python中的列表(list
)或元组(tuple
)来创建一个Numpy Array。
import numpy as np
arr = np.array([1,2,3,4,5])
print(arr)
# [1 2 3 4 5]
2. 使用Numpy中的函数创建
Numpy提供了一些函数,用于创建各种类型的数组。
import numpy as np
#创建一个由0组成的数组
a = np.zeros((3,4))
print(a)
# [[0. 0. 0. 0.]
# [0. 0. 0. 0.]
# [0. 0. 0. 0.]]
#创建一个由1组成的数组
b = np.ones((2,3))
print(b)
# [[1. 1. 1.]
# [1. 1. 1.]]
#创建一个空数组,元素为随机值
c = np.empty((2,2))
print(c)
# [[4.9e-324 0.0e+000]
# [0.0e+000 0.0e+000]]
#创建一个identity数组
d = np.eye(3)
print(d)
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
#创建一个等差数列数组
e = np.arange(1,11)
print(e)
# [ 1 2 3 4 5 6 7 8 9 10]
#创建一个元素均匀分布的数组
f = np.linspace(1,10,5)
print(f)
# [ 1. 3.25 5.5 7.75 10. ]
Numpy Array基本操作
我们可以对Numpy Array进行各种高效的操作。
1. Array索引
Numpy Array支持直接通过下标进行索引。
import numpy as np
arr = np.array([1,2,3,4,5])
print(arr[0])
# 1
arr2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(arr2[0][1])
# 2
2. Array分片
我们也可以通过下标进行分片操作。
import numpy as np
arr = np.array([1,2,3,4,5])
print(arr[1:4])
# [2 3 4]
arr2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(arr2[0:2, 1:3])
# [[2 3]
# [5 6]]
3. Array形状操作
我们可以通过reshape
函数改变数组的形状。
import numpy as np
arr = np.array([1,2,3,4,5,6,7,8])
print(arr.reshape(2,4))
# [[1 2 3 4]
# [5 6 7 8]]
4. Array属性
我们可以从数组对象中获取其属性,比如:数组的形状、数组的数据类型、数组中元素的数量等等。
import numpy as np
arr = np.array([[1,2,3], [4,5,6]])
print(arr.shape)
# (2, 3)
print(arr.dtype)
# int64
print(arr.size)
# 6
5. Array运算
我们可以对Numpy Array进行各种高效的运算,如加减乘除、求和、求平均值、计算方差、计算标准差等等。
import numpy as np
arr = np.array([1,2,3,4,5])
print(arr + 2)
# [3 4 5 6 7]
print(arr - 1)
# [0 1 2 3 4]
print(arr * 2)
# [ 2 4 6 8 10]
print(arr / 2)
# [0.5 1. 1.5 2. 2.5]
print(np.sum(arr))
# 15
print(np.mean(arr))
# 3.0
print(np.var(arr))
# 2.0
print(np.std(arr))
# 1.4142135623730951
Numpy Array获取行索引
1. 通过下标获取
我们可以通过下标直接访问数组中的元素。
import numpy as np
arr = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(arr[1])
# [4 5 6]
2. 通过行索引获取
我们也可以通过行索引获取指定行。
import numpy as np
arr = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(arr[arr[:,0] == 4])
# [[4 5 6]]
注意:这里使用了布尔数组的技巧。arr[:,0]
表示获取数组arr所有行的第0列,而arr[:,0] == 4
则表示比较这些元素是否等于4,得到一个布尔数组。最终使用这个布尔数组作为下标,从而获取满足指定条件的行。
3. 通过where
函数获取
where
函数可以获取满足条件的元素索引。
import numpy as np
arr = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(np.where(arr == 4))
# (array([1]), array([0]))
其中,np.where
函数返回的是一个元组,第一个元素是满足条件的行的下标,第二个元素是满足条件的列的下标。