gpt4 book ai didi

Python 二维条件

转载 作者:太空宇宙 更新时间:2023-11-04 08:37:11 31 4
gpt4 key购买 nike

我不确定如何表述条件循环。我想创建一个由等于 1 或 -1 的元素组成的 NxN 数组。我首先创建了一个 3x3 数组,打印时它由 0 到 1 之间的数字组成。

col = 3
row = 3

mymatrix = np.random.rand(col,row)

我想将它们的值设置为 1 或 -1,具体取决于分配给它们的值是否大于或等于 0.5。

for i in range(0,2): 
for j in range(0,2):
if mymatrix[i,j] <= 0.5:
mymatrix[i,j] = -1.0
elif mymatrix[i,j] >= 0.5:
mymatrix[i,j] = 1.0

print mymatrix

出于某种原因,这将打印一个 3x3 矩阵,其中只有内部 4 个元素为 1 或 -1。

[[-1, 1,0.19343979] 
[ 1, -1, 0.59891168]
[ 0.02766664, 0.73244162, 0.41541223]]

我知道 mymatrix[2,2] 是 0.41541223,所以我不明白为什么没有循环。

最佳答案

你的问题

您需要遍历所有行和列:

for i in range(row): 
for j in range(col):

你只循环前两个:

col = 3
row = 3

在 Python 中,range(start, end) 给出一个范围起始形式,start 包含在内,end 包含在内。

for i in range(0,2): 
for j in range(0,2):

顺便说一句,在 Python 中,行是第一个维度,所以这样会更好:

mymatrix = np.random.rand(row, col)

即使 rowcol 在您的情况下具有相同的值。

更好的解决方案

使用 NumPy 数组时,应尽可能避免循环,因为循环可能真的很慢。根据我的经验,NumPy 数组上的循环甚至比 Python 列表上的循环还要慢。因此,最好这样做:

np.where(mymatrix <= 0.5, -1, 1)

这是一个速度更快的矢量化版本。使用 NumPy 的目标之一通常是提高速度。

where(condition, [x, y])

Return elements, either from x or y, depending on condition.

关于Python 二维条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48102450/

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