标签: numpy-slicing

如何截断一个numpy数组?

我正在尝试使用以下代码行将“数据”(大小为112943)截断为形状(1,15000):

data = np.reshape(data, (1, 15000))
Run Code Online (Sandbox Code Playgroud)

但是,这给了我以下错误:

ValueError: cannot reshape array of size 112943 into shape (1,15000)
Run Code Online (Sandbox Code Playgroud)

关于如何解决此错误的任何建议?

python numpy reshape valueerror numpy-slicing

3
推荐指数
1
解决办法
5253
查看次数

Numpy python 数组切片

我有一个如下所示的数组,

[[240.66666667 171.22222222 158.33333333]
 [218.66666667 134.77777778 143.33333333]
 [197.33333333 118.55555556 128.44444444]
 [195.22222222 119.33333333 126.11111111]
 [196.77777778 118.55555556 123.77777778]
 [183.11111111 111.88888889 118.88888889]
 [173.77777778 106.77777778 114.44444444]]
Run Code Online (Sandbox Code Playgroud)

我想对所有行的第一列和第三列进行切片,并希望获得此输出,

[[240.66666667 158.33333333]
 [218.66666667 143.33333333]
 [197.33333333 128.44444444]
 [195.22222222 126.11111111]
 [196.77777778 123.77777778]
 [183.11111111 118.88888889]
 [173.77777778 114.44444444]]
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法?

输出截图:

在此处输入图片说明

python arrays numpy multidimensional-array numpy-slicing

3
推荐指数
1
解决办法
60
查看次数

将 3D numpy 拆分为 3 个不同的数组

我有 numpy.array pf shape (64 , 64 , 64) 我想将它分成 3 个变量,所以

x.shape ==> (64) 

y.shape ==> (64) 

z.shape ==> (64) 
Run Code Online (Sandbox Code Playgroud)

由于每个暗淡代表体素坐标 (x,y,z) ,我尝试使用dsplit()但没有运气。有什么建议吗?

python voxel multidimensional-array numpy-slicing numpy-ndarray

2
推荐指数
1
解决办法
3604
查看次数

设置 numpy 数组的列值的奇怪结果

在下面的脚本中,我想将旋转矩阵应用于(Nx3)数组的前两列。

rotate_mat = lambda theta: np.array([[np.cos(theta),-np.sin(theta)],[np.sin(theta),np.cos(theta)]])

rot_mat = rotate_mat(np.deg2rad(90))

basis1 = np.array([[i+1,j+1,k+1] for k in range(3) for j in range(3) for i in range(3)])
basis2 = basis1.copy()
rot = basis2[:,0:2] @ rot_mat

print('rot','\n',rot[:3],'\n')
print('basis2','\n',basis2[:3],'\n')

basis2[:,0:2] = rot
print('basis2 after','\n',basis2[:3])
Run Code Online (Sandbox Code Playgroud)

运行此脚本后,我获得了此输出

rot 
 [[ 1. -1.]
 [ 1. -2.]
 [ 1. -3.]] 

basis2 
 [[1 1 1]
 [2 1 1]
 [3 1 1]] 

basis2 after 
 [[ 1  0  1]
 [ 1 -2  1]
 [ 1 -3  1]]
Run Code Online (Sandbox Code Playgroud)

正如你所看到的basis2[:,0:2] = rot …

python numpy numpy-slicing numpy-ndarray

2
推荐指数
1
解决办法
46
查看次数

numpy 数组子集的元素平方

我有以下 numpy 数组

np.array([[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]])
Run Code Online (Sandbox Code Playgroud)

我想仅通过按原样保留第一列来计算第二列和第三列的元素平方,从而产生结果,

np.array([[1,  4,   9],
          [4, 25, 36]],
          [7, 64, 81]])
Run Code Online (Sandbox Code Playgroud)

我尝试了什么,我提取了第一列。然后我提取了第二列和第三列。使用numpy.square函数找到正方形。

arr1 = arr[:, 0]
arr2 = np.square(arr[:, 1:])
Run Code Online (Sandbox Code Playgroud)

然后将它们连接起来

np.c_[arr1, arr2]
Run Code Online (Sandbox Code Playgroud)

有单步解决方案吗?

python numpy numpy-slicing

2
推荐指数
1
解决办法
74
查看次数

具有批量大小的 Numpy 切片

我有一个 numpyA的 shape数组(550,10)。我的批量大小为 100,即我想要从中获取多少数据行A。在每次迭代中,我想从 A 中提取 100 行。但是当我到达最后 50 行时,我想要从 A 中提取最后 50 行和前 50 行。

我有一个这样的函数:

def train(index, batch_size):

    if(batch_size + index < A.shape(0)):
          data_end_index = index + batch_size
          batch_data = A[index:batch_end_index,:]
    else:
          data_end_index = index + batch_size - A.shape(0) #550+100-600 = 50
          batch_data = A[500 to 549 and 0 to 49] # How to slice here ?
Run Code Online (Sandbox Code Playgroud)

如何执行最后一步?

python numpy numpy-slicing

1
推荐指数
1
解决办法
4448
查看次数

如何解释这种 NumPy 索引:a[2::2, ::2]?

谁能告诉如何解释这种寻址方式:a[2::2, ::2]?我不知道如何使用这种索引。

a = np.random.random((6,6))
print(a)
[[0.17948771 0.61436323 0.48768101 0.20540278 0.15331527 0.17766787]
 [0.40028608 0.63915391 0.92719741 0.56604286 0.92959065 0.92707981]
 [0.27554561 0.09253335 0.73841082 0.00840638 0.33683454 0.89065058]
 [0.25030938 0.37093169 0.70789081 0.95205777 0.60483874 0.81425781]
 [0.14250593 0.56916738 0.45440191 0.21140548 0.72945015 0.59313599]
 [0.68116512 0.45349473 0.23057609 0.36349226 0.622701   0.07951557]]

a[2::2, ::2]
array([[0.27554561, 0.73841082, 0.33683454],
       [0.14250593, 0.45440191, 0.72945015]])
Run Code Online (Sandbox Code Playgroud)

python numpy numpy-slicing numpy-ndarray

1
推荐指数
1
解决办法
50
查看次数

numpy 数组的属性

假设我们有一个 numpy 数组。

a = np.array([[1,2,3],[4,5,6], [7,8,9]])
Run Code Online (Sandbox Code Playgroud)

现在,如果我想提取第 0 列和第 2 列,则需要执行类似的操作

b = a[:, [0, 2]]
Run Code Online (Sandbox Code Playgroud)

然而,如果我们尝试通过执行来查找 b 的属性b.flags,我们会得到

C_CONTIGUOUS : False
F_CONTIGUOUS : True
Run Code Online (Sandbox Code Playgroud)

可以看到,原本是C_contigious的数组a自动转换为F_contigulous。如果我在单核上运行代码,这通常不会造成任何问题。但是,如果我使用 mpi4py 将数据分散到多个核心,则它必须仅是 C_contigious,否则分散是不正确的。

我的问题是如何避免“b”自动转换为 F_contigious?

谢谢,

SLB

python numpy numpy-slicing

1
推荐指数
1
解决办法
168
查看次数