我有一个带有二进制元素的numpy形状数组(271 )。
例如:
arr = array([0., 0., 0., 1., 1., 1., 0., 0., 1., .........])如何将其转换为形状为271*80*1的三维数组以形成new_3d_arr?
所以我的new_3d_arr[0]是80 rows with 0's* 1 column形状的
我希望有一个简单的方法来实现这一点。
我在下面的代码中尝试了&我可以得到所需的结果,但是我希望有一个简单的方法来实现这个
new_3d_arr = []
for i in arr:
arr_2d = array([i]*80).reshape((-1,1))
new_3d_arr.append(arr_2d)
new_3d_arr = array(new_3d_arr)
发布于 2019-07-17 13:02:10
U可以使用numpy.newaxis添加新轴,而不是使用numpy.repeat沿着轴1重复数组(新大小为(271,1,1)) 80次。
import numpy as np
arr = np.random.randint(0, 2, size=271)
print(arr.shape) # out: (271,)
arr_3d = np.repeat(arr[:, np.newaxis, np.newaxis], 80, axis=1)
print(arr_3d.shape) # out: (271, 80, 1)希望这就是你要找的!?
发布于 2019-07-17 13:12:32
我不确定我是否正确地理解了你的问题。根据我从您的numpy数组中了解到的形状(271),您需要一个具有形状(271,80,1)的三维numpy数组,以便其他条目为0。
也许有更有效的解决方案,但下面是我想出的:
首先创建一个只包含零的新的numpy数组:new_3d_arr = np.zeros((271,80,1))
然后,对于长度为80的271个向量中的每一个,我们将第一个条目更改为具有二进制条目的条目。
for i in range(len(arr)):
new_3d_arr[i][0][0] = arr[i]https://stackoverflow.com/questions/57075400
复制相似问题