我正在尝试使用以下代码行将“数据”(大小为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)
关于如何解决此错误的任何建议?
我有一个如下所示的数组,
[[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)
有没有人有任何想法?
输出截图:
我有 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
在下面的脚本中,我想将旋转矩阵应用于(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 …
我有以下 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)
有单步解决方案吗?
我有一个 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)
如何执行最后一步?
谁能告诉如何解释这种寻址方式: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) 假设我们有一个 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