gpt4 book ai didi

python - [ :, :] 在 NumPy 数组上是什么意思

转载 作者:IT老高 更新时间:2023-10-28 22:10:50 24 4
gpt4 key购买 nike

抱歉这个愚蠢的问题。我在 PHP 上编程,但在 Python 上找到了一些不错的代码,并想在 PHP 上“重新创建”它。但我对这条线很沮丧

self.h = -0.1    
self.activity = numpy.zeros((512, 512)) + self.h
self.activity[:, :] = self.h

但我不明白是什么

[:, :]

意思。

此外,我无法“Google It”。

完整代码

import math
import numpy
import pygame
from scipy.misc import imsave
from scipy.ndimage.filters import gaussian_filter


class AmariModel(object):

def __init__(self, size):
self.h = -0.1
self.k = 0.05
self.K = 0.125
self.m = 0.025
self.M = 0.065

self.stimulus = -self.h * numpy.random.random(size)
self.activity = numpy.zeros(size) + self.h
self.excitement = numpy.zeros(size)
self.inhibition = numpy.zeros(size)

def stimulate(self):
self.activity[:, :] = self.activity > 0

sigma = 1 / math.sqrt(2 * self.k)
gaussian_filter(self.activity, sigma, 0, self.excitement, "wrap")
self.excitement *= self.K * math.pi / self.k

sigma = 1 / math.sqrt(2 * self.m)
gaussian_filter(self.activity, sigma, 0, self.inhibition, "wrap")
self.inhibition *= self.M * math.pi / self.m

self.activity[:, :] = self.h
self.activity[:, :] += self.excitement
self.activity[:, :] -= self.inhibition
self.activity[:, :] += self.stimulus


class AmariMazeGenerator(object):

def __init__(self, size):
self.model = AmariModel(size)

pygame.init()
self.display = pygame.display.set_mode(size, 0)
pygame.display.set_caption("Amari Maze Generator")

def run(self):
pixels = pygame.surfarray.pixels3d(self.display)

index = 0
running = True
while running:
self.model.stimulate()

pixels[:, :, :] = (255 * (self.model.activity > 0))[:, :, None]
pygame.display.flip()

for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
elif event.key == pygame.K_s:
imsave("{0:04d}.png".format(index), pixels[:, :, 0])
index = index + 1
elif event.type == pygame.MOUSEBUTTONDOWN:
position = pygame.mouse.get_pos()
self.model.activity[position] = 1

pygame.quit()


def main():
generator = AmariMazeGenerator((512, 512))
generator.run()


if __name__ == "__main__":
main()

最佳答案

[:, :] 代表从头到尾的所有内容,就像列表一样。不同的是,第一个 : 代表第一个维度,第二个 : 代表第二个维度。

a = numpy.zeros((3, 3))

In [132]: a
Out[132]:
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])

分配到第二行:

In [133]: a[1, :] = 3

In [134]: a
Out[134]:
array([[ 0., 0., 0.],
[ 3., 3., 3.],
[ 0., 0., 0.]])

分配给第二列:

In [135]: a[:, 1] = 4

In [136]: a
Out[136]:
array([[ 0., 4., 0.],
[ 3., 4., 3.],
[ 0., 4., 0.]])

分配给所有人:

In [137]: a[:] = 10

In [138]: a
Out[138]:
array([[ 10., 10., 10.],
[ 10., 10., 10.],
[ 10., 10., 10.]])

关于python - [ :, :] 在 NumPy 数组上是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16815928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com