Python 长度为n的一维数组转换为二维数组sqrt(n)*sqrt(n)?
有没有简单的方法可以通过Python 长度为n的一维数组转换为二维数组sqrt(n)*sqrt(n)?,python,arrays,matrix,Python,Arrays,Matrix,有没有简单的方法可以通过sqrt(n)矩阵将长度为n的1d数组重新排列成sqrt(n)(假设数组总是完美的正方形长度) 我试图使用for循环来实现它,但结果是有害的。:D array = [1,2,3,4,5,6,7,8,9], matrix=[[1,2,3],[4,5,6],[7,8,9]] 当然,和努比一起 array = np.array([1,2,3,4,5,6,7,8,9]) box = int(np.sqrt(array.shape[0])) matrix = array.resh
sqrt(n)
矩阵将长度为n
的1d数组重新排列成sqrt(n)
(假设数组总是完美的正方形长度)
我试图使用for
循环来实现它,但结果是有害的。:D
array = [1,2,3,4,5,6,7,8,9], matrix=[[1,2,3],[4,5,6],[7,8,9]]
当然,和努比一起
array = np.array([1,2,3,4,5,6,7,8,9])
box = int(np.sqrt(array.shape[0]))
matrix = array.reshape((box,box))
>>>
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>>
当然,和努比一起
array = np.array([1,2,3,4,5,6,7,8,9])
box = int(np.sqrt(array.shape[0]))
matrix = array.reshape((box,box))
>>>
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>>
您也可以通过本机执行此操作:
import math
arr = [1,2,3,4,5,6,7,8,9]
sq = int(math.sqrt(len(arr)))
matrix = [arr[i * sq:i * sq + sq] for i in range(sq)]
print(matrix)
结果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
您也可以通过本机执行此操作:
import math
arr = [1,2,3,4,5,6,7,8,9]
sq = int(math.sqrt(len(arr)))
matrix = [arr[i * sq:i * sq + sq] for i in range(sq)]
print(matrix)
结果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
不需要第三方库就可以做到这一点 首先我们求平方根,然后去掉小数 然后我们一次选择三个数字,使用以下符号
数组[0:3]
(返回[1,2,3]
)
最后,所有这些都存储在数组或矩阵中
import math
array = [1,2,3,4,5,6,7,8,9]
num=int(math.sqrt(len(array)))
array_out=[array[i*num:i*num+num] for i in range(num)]
结果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
不需要第三方库就可以做到这一点 首先我们求平方根,然后去掉小数 然后我们一次选择三个数字,使用以下符号
数组[0:3]
(返回[1,2,3]
)
最后,所有这些都存储在数组或矩阵中
import math
array = [1,2,3,4,5,6,7,8,9]
num=int(math.sqrt(len(array)))
array_out=[array[i*num:i*num+num] for i in range(num)]
结果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]