python中的链表理解 this=rand(100,3,4) 对于范围(0100)内的i: 对于范围(0,3)内的j: 对于范围(0,4)内的k: 如果在我看来,您最好使用内置的numpy例程,例如 导入numpy >>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码
在我看来,您最好使用内置的numpy例程,例如 导入numpy >>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码<0.5,0,x)python中的链表理解 this=rand(100,3,4) 对于范围(0100)内的i: 对于范围(0,3)内的j: 对于范围(0,4)内的k: 如果在我看来,您最好使用内置的numpy例程,例如 导入numpy >>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码,python,numpy,list-comprehension,Python,Numpy,List Comprehension,在我看来,您最好使用内置的numpy例程,例如 导入numpy >>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码>>导入numpy.random
在我看来,您最好使用内置的numpy例程,例如 导入numpy >>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码<0.5,0,x)
在我看来,您最好使用内置的numpy例程,例如 导入numpy >>>导入numpy.random >>>x=numpy.random.rand(100,3,4) >>>掩码=numpy.random.rand(*x.shape) >>>结果=numpy.其中(掩码<0.5,0,x)
输出不是列表,因此不确定您为什么要求列表理解?你是在问有没有一种更像python的方法来重构嵌套for循环?@Burhan:是的。同样的事情可以用链表来完成吗?没有嵌套循环?列表理解的结果是列表;您的代码没有生成列表(而是修改矩阵),因此不确定为什么要查找列表。矩阵可以被视为列表中的列表,对吗?但我对你的解决方案更满意。只是理解跑得更快。这就是为什么我喜欢列表理解。使用
numpy.where
应该足够快:我应该更明确一点——列表理解表达式的计算结果是一个新列表;它不是为修改列表而设计的(无论如何,你应该避免这样做——这是一个很大的bug来源)<代码>numpy.where如果不等同于理解,则可能会更快-注意,如果要将循环实现为理解,您将创建一个列表,然后丢弃它。输出不是列表,因此不确定您为什么要求列表理解?你是在问有没有一种更像python的方法来重构嵌套for循环?@Burhan:是的。同样的事情可以用链表来完成吗?没有嵌套循环?列表理解的结果是列表;您的代码没有生成列表(而是修改矩阵),因此不确定为什么要查找列表。矩阵可以被视为列表中的列表,对吗?但我对你的解决方案更满意。只是理解跑得更快。这就是为什么我喜欢列表理解。使用numpy.where
应该足够快:我应该更明确一点——列表理解表达式的计算结果是一个新列表;它不是为修改列表而设计的(无论如何,你应该避免这样做——这是一个很大的bug来源)<代码>numpy.where如果不等同于理解,则可能会更快-注意,如果要将循环实现为理解,您将创建一个列表,然后丢弃它。输出不是列表,因此不确定您为什么要求列表理解?你是在问有没有一种更像python的方法来重构嵌套for循环?@Burhan:是的。同样的事情可以用链表来完成吗?没有嵌套循环?列表理解的结果是列表;您的代码没有生成列表(而是修改矩阵),因此不确定为什么要查找列表。矩阵可以被视为列表中的列表,对吗?但我对你的解决方案更满意。只是理解跑得更快。这就是为什么我喜欢列表理解。使用numpy.where
应该足够快:我应该更明确一点——列表理解表达式的计算结果是一个新列表;它不是为修改列表而设计的(无论如何,你应该避免这样做——这是一个很大的bug来源)<代码>numpy.where如果不等同于理解,则可能会更快-注意,如果要将循环实现为理解,您将创建一个列表,然后丢弃它。输出不是列表,因此不确定您为什么要求列表理解?你是在问有没有一种更像python的方法来重构嵌套for循环?@Burhan:是的。同样的事情可以用链表来完成吗?没有嵌套循环?列表理解的结果是列表;您的代码没有生成列表(而是修改矩阵),因此不确定为什么要查找列表。矩阵可以被视为列表中的列表,对吗?但我对你的解决方案更满意。只是理解跑得更快。这就是为什么我喜欢列表理解。使用numpy.where
应该足够快:我应该更明确一点——列表理解表达式的计算结果是一个新列表;它不是为修改列表而设计的(无论如何,你应该避免这样做——这是一个很大的bug来源)<代码>numpy。如果不等同于理解,则可能会更快-注意,如果要将循环实现为理解,您将创建一个列表,然后丢弃它。您能否解释一下rand(*x.shape)
是如何工作的?这是什么意思?@AbhishekTripathi-See你能解释一下rand(*x.shape)是如何工作的吗?这是什么意思?@AbhishekTripathi-See你能解释一下rand(*x.shape)是如何工作的吗?这是什么意思?@AbhishekTripathi-See你能解释一下rand(*x.shape)是如何工作的吗?这是什么意思?@AbhishekTripathi明白了
this = rand(100,3,4)
for i in range(0,100):
for j in range(0,3):
for k in range(0,4):
if rand()<0.5:
this[i,j,k]=0
>>> import numpy
>>> import numpy.random
>>> x = numpy.random.rand(100, 3, 4)
>>> mask = numpy.random.rand(*x.shape)
>>> result = numpy.where(mask < 0.5, 0, x)