机器学习中会经常使用numpy下的函数,需要明确方法的功能及使用的注意事项,多练习,才能熟能生巧;
np.zeros()是numpy库中的一个函数,用于创建指定形状的全零数组。函数语法如下:
numpy.zeros(shape, dtype=float, order='C')
其中,参数shape表示要创建的数组的形状,可以是一个整数或者一个元组;参数dtype表示数组的数据类型,默认为float;参数order表示数组在内存中的存储顺序,可以是’C’(按行存储)或’F’(按列存储),默认为’C’。
例如,要创建一个2行3列的全零数组,可以使用以下代码:
import numpy as np
arr = np.zeros((2, 3))
print(arr)
输出结果为:
[[0. 0. 0.]
[0. 0. 0.]]
补充:np.ones()和 np.empty()
np.ones()是numpy库中的一个函数,用于创建指定形状的全1数组。np.empty()是numpy库中的一个函数,用于创建指定形状的未初始化的数组,即数组元素的值是随机的。
import numpy as np
arr1 = np.ones((2, 3))
print(arr1)
arr2 = np.empty((2, 3))
print(arr2)
输出结果为:
[[1. 1. 1.]
[1. 1. 1.]]
[[1. 2. 3.]
[4. 5. 6.]]
np.sum()是numpy库中的一个函数,用于计算数组中元素的总和。函数语法如下:
numpy.sum(a, axis=None, dtype=None, keepdims=False)
其中,参数a表示要计算总和的数组;参数axis表示计算总和的轴向,可以是一个整数、一个元组或者None,默认为None,表示计算所有元素的总和;参数dtype表示输出结果的数据类型;参数keepdims表示是否保留每个轴的维度,保留则为True,不保留则为False,默认为False。如果使用np.sum()函数计算每一列的总和,可以将axis参数设置为0,如果计算每一行的总和,可以将axis参数设置为1,需要注意keepdims为true和false的区别。
例如,要计算一个2行3列的数组的总和,可以使用以下代码:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
sum1 = np.sum(arr)
print(sum1)
sum2 = np.sum(arr,0)
print(sum2)
sum3 = np.sum(arr,1)
print(sum3)
row_sum = np.sum(arr, axis=1, keepdims=True)
print(row_sum)
输出结果为:
21
[5 7 9]
[ 6 15]
[[ 6]
[15]]
np.reshape()是numpy库中的一个函数,用于改变数组的形状,即将一个数组调整为指定的形状。函数语法如下:
numpy.reshape(a, newshape, order='C')
其中,参数a表示要改变形状的数组;参数newshape表示新的形状,可以是一个整数或者一个元组;参数order表示在内存中的存储顺序,可以是’C’(按行存储)或’F’(按列存储),默认为’C’。
例如,假设有一个一维数组arr,可以使用以下代码将其转换为3行2列的二维数组:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
arr1 = np.array([[1, 2], [3, 4], [5, 6]])
new_arr = np.reshape(arr, (3, 2))
new_arr1 = np.reshape(arr, (-1, 1))
new_arr2 = np.reshape(arr, (2, 3))
print(new_arr)
print(new_arr1)
print(new_arr2)
输出结果为:
[[1 2]
[3 4]
[5 6]]
[[1]
[2]
[3]
[4]
[5]
[6]]
[[1 2 3]
[4 5 6]]
在numpy中,可以使用以下两种方式对数组进行转置:
np.transpose()函数:该函数用于对数组进行转置,返回转置后的新数组。函数语法如下:
numpy.transpose(a, axes=None)
其中,参数a表示要进行转置的数组;参数axes用于指定转置后数组的轴的顺序,默认为None,表示将所有轴反转。
例如,对于一个2行3列的数组arr,可以使用以下代码进行转置:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
transpose_arr = np.transpose(arr)
print(transpose_arr)
输出结果为:
[[1 4]
[2 5]
[3 6]]
.T属性:该属性用于对数组进行转置,返回转置后的新数组。可以看作是np.transpose()函数的简写形式。例如,对于一个2行3列的数组arr,可以使用以下代码进行转置:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
transpose_arr = arr.T
print(transpose_arr)
输出结果为:
[[1 4]
[2 5]
[3 6]]
需要注意的是,这两种方式都返回一个新的数组,原始数组并没有被改变。如果需要在原始数组上进行操作,可以使用arr.T或np.transpose(arr)进行赋值操作。