Python 为什么img[0:overlap,:,:]=1起作用,但在numpy中不起作用img=img[0:overlap,:,:]=1不起作用?
我在numpy中创建了一个零数组: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 我对这些数组对象的
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是如何处理矩阵的。我认为这是有道理的-谢谢!