【发布时间】:2020-03-09 19:08:05
【问题描述】:
我对python编程很熟悉,但是我发现了一些奇怪的情况,以下两行代码提供了不同的结果(假设两个数组是二维的):
A[:][:] = B[:][:]
和
A[:,:] = B[:,:]
不知有没有什么情况,解释一下。
有什么提示吗?
例子:
>>> x = numpy.array([[1, 2], [3, 4], [5, 6]])
>>> x
array([[1, 2],
[3, 4],
[5, 6]])
>>> x[1][1]
4 # expected behavior
>>> x[1,1]
4 # expected behavior
>>> x[:][1]
array([3, 4]) # huh?
>>> x[:,1]
array([2, 4, 6]) # expected behavior
【问题讨论】:
-
一个是多维列表,另一个是锯齿状列表。见ict.social/python/basics/multidimensional-lists-in-python
-
@RobertHarvey 问题是关于
numpy.ndarray对象,真的,你不能仅仅从这里知道对象的类型,而且无论如何,python 列表没有“维度”。 -
好吧,好吧。但这不是问题要问的。
-
@RobertHarvey 好吧,问题不是锯齿状,而是 numpy.ndarray 对象实现真正的多维数组,并且不能锯齿状。该链接非常糟糕,给人很多误导性的印象,即它试图将其伪装成不仅仅是有用的抽象,而是“技术上如何实现事物”。
-
这个问题可以以现在的形式回答吗?
标签: python arrays numpy numpy-ndarray numpy-slicing