Python:使用range()函数或np.arrange()作为参数arr[range(m),y]
这是我在博客中看到的: (来源:) 我还尝试用整数替换y(矩阵):Python:使用range()函数或np.arrange()作为参数arr[range(m),y],python,arrays,deep-learning,Python,Arrays,Deep Learning,这是我在博客中看到的: (来源:) 我还尝试用整数替换y(矩阵): import numpy as np arr = np.array([[1,2,3], [4,5,6], [7,8,9]]) print(arr) arr[range(2), 1] = 0 print("after range: ", arr) 结果我得到: [[1 2 3]
import numpy as np
arr = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(arr)
arr[range(2), 1] = 0
print("after range: ", arr)
结果我得到:
[[1 2 3]
[4 5 6]
[7 8 9]]
after range: [[1 0 3]
[4 0 6]
[7 8 9]]
有人能解释一下这个range()函数在这里做什么吗?谢谢大家! Range只创建一个新的范围对象,范围从0到1,小于给定的值,例如:
>>> range(2)
[0, 1]
Numpy数组可以接受索引的iterables,因此在本例中,您的意思是“将{0,1}行的第1列设置为0”。范围(2)
就像在本例中将[0,1]
作为参数传递一样。在本实验中,您将得到相同的结果:
arr1 = np.array([[1,2,3], [4,5,6], [7,8,9]])
arr1[range(2), 1] = 0
arr2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
arr2[[0, 1], 1] = 0
np.all(arr1 == arr2)
其中np.all
检查整个数组中的等式是否为真,它将返回true
换句话说,arr[range(2),1]=0
也等于:
arr[0, 1] = 0
arr[1, 1] = 0
从另一个角度来看:
for i in range(2):
arr[i, 1] = 0
它被称为。传递其中一个轴的索引数组(范围(2)或[0,1])。
for i in range(2):
arr[i, 1] = 0