Python Numpy如何有效地改变价值观

时间:2013-10-24 11:03:56

标签: python arrays image numpy

在我的程序中,我当前创建一个充满零的numpy数组,然后循环遍历每个元素,用所需的值替换它。有更有效的方法吗?

下面是我正在做的一个例子,而不是一个int我有一个需要放入numpy数组的每一行的列表。有没有办法放置替换整行,这是更有效的。

import numpy as np
from tifffile import imsave

image = np.zeros((5, 2160, 2560), 'uint16')

num =0
for pixel in np.nditer(image, op_flags=['readwrite']):
     pixel = num
     num += 1
imsave('multipage.tif', image)

2 个答案:

答案 0 :(得分:1)

只需使用切片分配整行

import numpy as np
from tifffile import imsave

list_of_rows = ... # all items in list should have same length
image = np.zeros((len(list_of_rows),'uint16')

for row_idx, row in enumerate(list_of_rows):
    image[row_idx, :] = row

imsave('multipage.tif', image)

Numpy切片非常强大而且很棒。我建议您阅读this documentation以了解可能性。

答案 1 :(得分:0)

您只需生成长度为5 * 2160 * 2560的矢量并将其应用于图像。

image=np.arange(5*2160*2560)
image.shape=5,2160,-1