Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.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 为什么img[0:overlap,:,:]=1起作用,但在numpy中不起作用img=img[0:overlap,:,:]=1不起作用?_Python_Numpy_Matrix - Fatal编程技术网

Python 为什么img[0:overlap,:,:]=1起作用,但在numpy中不起作用img=img[0:overlap,:,:]=1不起作用?

Python 为什么img[0:overlap,:,:]=1起作用,但在numpy中不起作用img=img[0:overlap,:,:]=1不起作用?,python,numpy,matrix,Python,Numpy,Matrix,我在numpy中创建了一个零数组: img = np.zeros((30, 30, 3), np.uint8) 我想通过使用重叠变量将一定数量设置为1s。重叠告诉我我希望1开始的列数。当我试着这样做的时候 img = img[0:overlap,:,:] = 1 我得到以下错误: TypeError: 'int' object does not support item assignment 但当我这么做的时候,这很好: img[0:overlap,:,:] = 1 我对这些数组对象的

我在numpy中创建了一个零数组:

img = np.zeros((30, 30, 3), np.uint8)
我想通过使用重叠变量将一定数量设置为1s。重叠告诉我我希望1开始的列数。当我试着这样做的时候

img = img[0:overlap,:,:] = 1
我得到以下错误:

TypeError: 'int' object does not support item assignment
但当我这么做的时候,这很好:

 img[0:overlap,:,:] = 1

我对这些数组对象的想法是否有误?为什么我不能重新设置数组呢?第一个是将数组重新分配给同一个数组?

啊,这是一个棘手的问题

执行此操作时:

x = y = 42
您正在将值42赋给
x
y
。但是,实际上,
x
首先被赋值,然后
y
被赋值。所以,它是以下的简写:

x = 42
y = 42
img = 1
img[0:overlap,:,:] = 1
现在,看看您的代码:

img = img[0:overlap,:,:] = 1
这是以下的简写:

x = 42
y = 42
img = 1
img[0:overlap,:,:] = 1
当然,您也会同意
1[0:overlap,:,::]
毫无意义,并且正确地抛出了
TypeError:“int”对象不支持项分配

顺便问一下,
img[0:overlap,:,:]=1
已经修改了
img
,你为什么要尝试分配?即:

import numpy as np

overlap = 2
img = np.zeros((3, 4, 2), np.uint8)
img[0:overlap, :, :] = 1
print(img)
结果:

[[[1 1]
  [1 1]
  [1 1]
  [1 1]]

 [[1 1]
  [1 1]
  [1 1]
  [1 1]]

 [[0 0]
  [0 0]
  [0 0]
  [0 0]]]

啊,这是个棘手的问题

执行此操作时:

x = y = 42
您正在将值42赋给
x
y
。但是,实际上,
x
首先被赋值,然后
y
被赋值。所以,它是以下的简写:

x = 42
y = 42
img = 1
img[0:overlap,:,:] = 1
现在,看看您的代码:

img = img[0:overlap,:,:] = 1
这是以下的简写:

x = 42
y = 42
img = 1
img[0:overlap,:,:] = 1
当然,您也会同意
1[0:overlap,:,::]
毫无意义,并且正确地抛出了
TypeError:“int”对象不支持项分配

顺便问一下,
img[0:overlap,:,:]=1
已经修改了
img
,你为什么要尝试分配?即:

import numpy as np

overlap = 2
img = np.zeros((3, 4, 2), np.uint8)
img[0:overlap, :, :] = 1
print(img)
结果:

[[[1 1]
  [1 1]
  [1 1]
  [1 1]]

 [[1 1]
  [1 1]
  [1 1]
  [1 1]]

 [[0 0]
  [0 0]
  [0 0]
  [0 0]]]
“顺便说一下”这句话正是我想理解的:)。我想我没有完全理解numpy是如何处理矩阵的。我认为这是有道理的-谢谢!“顺便说一下”这句话正是我想理解的:)。我想我没有完全理解numpy是如何处理矩阵的。我认为这是有道理的-谢谢!