X和x,y的区别是什么?在我的示例中,我希望将np.ndarray分配给另一种方式,其中一种方式工作,而另一种方式不起作用。同样的指数,所以我很想知道为什么。谢谢。
>>> gtfb_fft_hypercube.shape
(187, 42, 96, 1026)
>>> amp_mod_cube.shape
(42, 1025, 187)
>>> gtfb_fft_hypercube[0][0][0][1:] = amp_mod_cube[0][:][0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not broadcast input array from shape (187,) into shape (1025,)
>>> gtfb_fft_hypercube[0, 0, 0, 1:] = amp_mod_cube[0, :, 0]
>>> 发布于 2022-02-16 09:26:01
以下是完全非技术性的解释.
当你这样做时:
gtfb_fft_hypercube[0]您已经“查找并提取”了gtfb_fft_hypercube的第一行,它是一个新的(42, 96, 1026)形状的“东西/实体”。
当你这样做时:
gtfb_fft_hypercube[0][0]然后,您将获取这个新事物的第一个元素(通过切片)--它不再附加到原始的gtfb_fft_hypercube上,也不再是原始的一部分,它只是从类似列表的东西中分割出来的一部分。
用词可能比较容易,但原则是一样的:
sentence = ["The","cat","sat","on","the","mat"]
# Get first word - by looking it up in sentence
firstWord = sentence[0] # firstWord = "The
# Get first letter of first word
firstLetter = firstWord[0] # firstLetter = "T"但是现在我们不能通过sentence或firstWord来指firstLetter,因为它是一种新的、分离的东西。
发布于 2022-02-16 16:40:03
每个[]都是一个__getitem__调用(在[]=的情况下是set )。
[:]本身什么也不做。用一个小数组来测试你自己。
[0][0][0][1:]等同于[0,0,0,1:] (虽然速度稍慢)。
[0][:][0]相当于[0,0],或者在这个3d情况下,[0,0,:]。从错误消息中可以看出这一点。它选择的是最后一个维度,而不是中间。
大多数情况下,在进行多维数组索引时,使用单操作语法[ , , ,]。花更多的时间阅读基本的numpy文档,特别是大索引页。
https://stackoverflow.com/questions/71138439
复制相似问题