我有一个mysql表,看起来像这样:
id | uid | title | description | parent
1 | 1 | Portraits | desc. | photostream
2 | 1 | Abstract | descr. | photostream
Run Code Online (Sandbox Code Playgroud)
我正在尝试构建一个最终看起来像这样的多维数组:
Array
(
[0]
[id] => 1
[uid] => 1
[title] => Portraits
[description] => desc.
[parent] => photostream
[1]
[id] => 2
[uid] => 1
[title] => Abstract
[description] => descr.
[parent] => photostream
)
Run Code Online (Sandbox Code Playgroud)
我正在使用选择查询:
$query = mysql_query(
"SELECT * FROM `table` WHERE `uid`='1' ORDER BY `id` DESC");
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?谢谢,Levi
与这个答案类似,我有一对3D numpy数组,a并且b,我想按照b值的值对条目进行排序a.与此答案不同,我只想沿阵列的一个轴排序.
我天真地阅读了numpy.argsort()文档:
Returns
-------
index_array : ndarray, int
Array of indices that sort `a` along the specified axis.
In other words, ``a[index_array]`` yields a sorted `a`.
Run Code Online (Sandbox Code Playgroud)
让我相信我可以使用以下代码进行排序:
import numpy
a = numpy.zeros((3, 3, 3))
a += numpy.array((1, 3, 2)).reshape((3, 1, 1))
print "a"
print a
"""
[[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 3. 3. 3.]
[ 3. 3. …Run Code Online (Sandbox Code Playgroud) 修复正整数n和k.
让A是长度的阵列n与A[i]长度的阵列k,其中每一个条目是n-i.例如,有n=5和k=1,这只是
[ [5] , [4] , [3] , [2] , [1] ]
Run Code Online (Sandbox Code Playgroud)
而对于n=5和k=2,这是
[ [5,5] , [4,4] , [3,3] , [2,2] , [1,1] ]
Run Code Online (Sandbox Code Playgroud)
目标是通过交换相邻数组中的数字(例如交换)来对这个数组数组进行冒泡排序A[i][j1],A[i+1][j2]直到每个数据A[i]都i+1为每个数组i.
问题是:需要多少交换以及什么是最佳算法?
注意: 有许多更好的排序算法可供使用.但是,对于这个问题,我只对应用如上所述的冒泡排序感兴趣.我只能交换相邻数组中的条目,我只对所需的最小数量的交换感兴趣.我很欣赏其他排序算法的所有建议,但这是我试图理解的问题.
例子:
因为k=1,这是众所周知的.交换次数是A被视为置换的反转次数,因此最小交换次数是二项式系数(n choose 2) = n(n-1)/2,这可以通过交换任何乱序对来实现:A[i] > A[j] …
我喜欢python处理变量交换的方式:
a, b, = b, a
我想使用这个功能来交换数组之间的值,不仅一次一个,而且还有一些(不使用临时变量).这不符合我的预期(我希望第三维的两个条目都可以互换):
import numpy as np
a = np.random.randint(0, 10, (2, 3,3))
b = np.random.randint(0, 10, (2, 5,5))
# display before
a[:,0, 0]
b[:,0,0]
a[:,0,0], b[:, 0, 0] = b[:, 0, 0], a[:,0,0] #swap
# display after
a[:,0, 0]
b[:,0,0]
Run Code Online (Sandbox Code Playgroud)
有没有人有想法?当然我总是可以引入一个额外的变量,但我想知道是否有更优雅的方式来做到这一点.
我对C/C++编译器的了解是,它们在初始化多维数组时忽略了内部括号.
所以,你不能这样做:
int myArray[][] = { { 2, 3 }, { 4, 5 }, { 4, 1 } };
Run Code Online (Sandbox Code Playgroud)
因为编译器会完全看到它
int myArray[][] = { 2, 3, 4, 5, 4, 1 };
Run Code Online (Sandbox Code Playgroud)
现在它不知道它是6*1,3*2,2*3,1*6,还是其他东西(因为这可能是部分初始化列表,不一定完整).
我的问题是,为什么这在许多编译器中都有效?
int myArray[][2] = { { 2 }, { 4, 5 }, { 4, 1 } };
Run Code Online (Sandbox Code Playgroud)
编译器"直观地"将其视为:
int myArray[][2] = { { 2, 0 }, { 4, 5 }, { 4, 1 } };
Run Code Online (Sandbox Code Playgroud)
这意味着它不会忽略大括号.到目前为止,我已经在三个不同的编译器上尝试了它并且都工作了.
我希望答案是"这只是编译器依赖".我无法访问该标准,因此请提供标准的答案.我不需要直觉,我有我的.
我有一个这样的列表:
a = ((4.0, 4, 4.0), (3.0, 3, 3.6), (3.5, 6, 4.8))
Run Code Online (Sandbox Code Playgroud)
我想要一个像这样的结果(列表中的每个第一个元素):
4.0, 3.0, 3.5
Run Code Online (Sandbox Code Playgroud)
我尝试了[:: 1] [0],但它不起作用
我刚刚开始学习Python几周前.Python版本= 2.7.9
在C和/或C++中操作动态(所有维度直到运行时才知道)的多维数组的接受/最常用方法是什么.
我正在努力找到完成此Java代码的最简洁方法:
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int rows=sc.nextInt();
int cols=sc.nextInt();
int[][] data=new int[rows][cols];
manipulate(data);
}
public static void manipulate(int[][] data){
for(int i=0;i<data.length;i++)
for(int j=0;j<data[0].length.j++){
System.out.print(data[i][j]);
}
}
Run Code Online (Sandbox Code Playgroud)
(从std_in读取只是为了澄清维度直到运行时才知道).
编辑:我注意到这个问题非常受欢迎,即使它很老了.我实际上并不同意最高投票的答案.我认为C的最佳选择是使用一维数组,如Guge所说:"你可以分配行cols sizeof(int)并通过表[row*cols + col]来访问它."
C++有很多选择,如果你真的喜欢boost或stl,那么下面的答案可能更好,但最简单也可能最快的选择是使用C中的单维数组.
如果你想要[] []语法,那么在C和C++中另一个可行的选择是lillq在底部的答案是手动构建具有大量malloc的数组.
我需要做的一些测试需要将已知数组与我将要运行的函数得到的结果进行比较.
用于递归地比较数组:
通过放置类似的内容,可以很容易地在Java中初始化2D数组(或者实际上是任何多维数组):
int[][] x = new int[][] {
{ 3, 5, 7, },
{ 0, 4, 9, },
{ 1, 8, 6, },
};
Run Code Online (Sandbox Code Playgroud)
它易于阅读,类似于2D矩阵等.
但是我如何在Scala中做到这一点?
最好的我可以想出看起来,更简洁:
val x = Array(
Array(3, 5, 7),
Array(0, 4, 9),
Array(1, 8, 6)
)
Run Code Online (Sandbox Code Playgroud)
我在这里看到的问题:
Array),在每个Array调用中省略尾随如果我搞砸了,除了插入一些Array()在阵列的中间,它会好与编译器,但类型x将变得悄无声息Array[Any],而不是Array[Array[Int]]:
val x = Array(
Array(3, 5, 7),
Array(0, 4), 9, // <= OK with compiler, silently ruins x
Array(1, 8, 6)
)
Run Code Online (Sandbox Code Playgroud)
有一个防范它,直接指定类型,但它看起来比在Java中更难过:
val …Run Code Online (Sandbox Code Playgroud)我正在尝试深入了解PyTorch Tensor内存模型的工作原理.
# input numpy array
In [91]: arr = np.arange(10, dtype=float32).reshape(5, 2)
# input tensors in two different ways
In [92]: t1, t2 = torch.Tensor(arr), torch.from_numpy(arr)
# their types
In [93]: type(arr), type(t1), type(t2)
Out[93]: (numpy.ndarray, torch.FloatTensor, torch.FloatTensor)
# ndarray
In [94]: arr
Out[94]:
array([[ 0., 1.],
[ 2., 3.],
[ 4., 5.],
[ 6., 7.],
[ 8., 9.]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
我知道PyTorch张量器共享 NumPy ndarrays 的内存缓冲区.因此,改变一个将反映在另一个.所以,在这里我正在切片并更新Tensor中的一些值t2
In [98]: t2[:, 1] = 23.0
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,它已经更新t2,arr因为它们共享相同的内存缓冲区.
In …Run Code Online (Sandbox Code Playgroud)