Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:使用range()函数或np.arrange()作为参数arr[range(m),y]_Python_Arrays_Deep Learning - Fatal编程技术网

Python:使用range()函数或np.arrange()作为参数arr[range(m),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]

这是我在博客中看到的: (来源:)

我还尝试用整数替换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]                                                                                                              
 [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