目录
一、切片方法
二、copy方法复制
三、diag 获取对角线元素
四、unique获取唯一的元素
我们除了能够一次访问一个元素之外,NumPy 还提供了访问 ndarray 子集的方式,称之为切片。切片方式是在方括号里用冒号 :
分隔起始和结束索引。通常,你将遇到三种类型的切片:
1. ndarray[start:end]
2. ndarray[start:]
3. ndarray[:end]
第一种方法用于选择在start和end索引之间的元素。第二种方法用于选择从start索引开始直到最后一个索引的所有元素。第三种方法用于选择从第一个索引开始直到 end 索引的所有元素。请注意,在第一种方法和第三种方法中,结束索引不包括在内。此外注意,因为 ndarray可以是多维数组,在进行切片时,通常需要为数组的每个维度指定一个切片。
import numpy as np
# 创建一个5行5列的二维数组
arr = np.arange(25).reshape(5, 5)
print('arr = {}\n'.format(arr))
# 选取arr从第2行(含)到第5行(不含),第1列(含)到第4列(不含) 组成的ndarray
A = arr[1:4, 0:3]
print('A = {}\n'.format(A))
# 选取arr从第2行(含)到最后一行(含),第1列(含)到第4列(不含) 组成的ndarray
B = arr[1:, 0:3]
print('B = {}\n'.format(B))
#选取arr从第1行(含)到4行(不含),第3列(含)到第4列(不含) 组成的ndarray
C = arr[:3, 2:3]
print('C = {}\n'.format(C))
#选取arr第三行的所有列组成的 ndarray
D = arr[2, :]
print('D = {}'.format(D))
运行结果:
arr = [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
A = [[ 5 6 7]
[10 11 12]
[15 16 17]]
B = [[ 5 6 7]
[10 11 12]
[15 16 17]
[20 21 22]]
C = [[ 2]
[ 7]
[12]]
D = [10 11 12 13 14]
np.copy(ndarray) 会用ndarray创建一个新的ndarray.
import numpy as np
# 创建一个5行5列的二维数组
arr = np.arange(25).reshape(5, 5)
print('arr = {}\n'.format(arr))
# copy arr的第2行(含)到第5行(不含),第1列(含)到第4列(不含) 到 A
A = np.copy(arr[1:4, 0:3])
print('A = {}\n'.format(A))
#copy A 到 B
B = arr.copy()
print('B = {}\n'.format(B))
运行结果:
arr = [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
A = [[ 5 6 7]
[10 11 12]
[15 16 17]]
B = [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
np.diag(ndarray, k=N)
函数会以 N
定义的对角线
提取元素。默认情况下,k=0
,表示主对角线。k > 0
的值用于选择在主对角线之上的对角线中的元素,k < 0
的值用于选择在主对角线之下的对角线中的元素。
import numpy as np
# 创建一个5行5列的二维数组
arr = np.arange(25).reshape(5, 5)
print('arr = \n{}\n'.format(arr))
#获取arr主对角线上的元素
A = np.diag(arr, k = 0)
print("A = {}\n".format(A))
#获取arr主对角线之下一行对角线元素
B = np.diag(arr, k = -1)
print("B = {}\n".format(B))
#获取arr主对角线之上一行对角线元素
C = np.diag(arr, k = 1)
print("C = {}\n".format(C))
运行结果:
arr =
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
A = [ 0 6 12 18 24]
B = [ 5 11 17 23]
C = [ 1 7 13 19]
import numpy as np
# 创建arr
arr = np.array([[1,2,3],[5,2,8],[1,2,3]])
print('arr = \n{}\n'.format(arr))
#获取arr中的唯一元素
A = np.unique(arr)
print("A = {}\n".format(A))
运行结果:
arr =
[[1 2 3]
[5 2 8]
[1 2 3]]
A = [1 2 3 5 8]
参考文档:https://www.numpy.org/devdocs/user/quickstart.html#changing-the-shape-of-an-array